/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } KeyboardState newkbState = Keyboard.GetState(); if (newkbState.IsKeyDown(Keys.Tab) && !oldKBState.IsKeyDown(Keys.Tab)) { Console.WriteLine("Tab"); MapEditor.Active(); IsMouseVisible = MapEditor.IsActive; } bool shift = Keyboard.GetState().IsKeyDown(Keys.LeftShift) || Keyboard.GetState().IsKeyDown(Keys.RightShift); // TODO: Add your update logic here MouseState currentMouseState = Mouse.GetState(); if (currentMouseState != originalMouseState) { float xDifference = currentMouseState.X - originalMouseState.X; camDirection -= 0.001f * xDifference; CenterMouse(); } // Rotate Camera with keyboard if (Keyboard.GetState().IsKeyDown(Keys.Q) && shift) // left { camDirection += .01f; } if (Keyboard.GetState().IsKeyDown(Keys.D) && shift) // right { camDirection -= .01f; } // Move camera up & down if (Keyboard.GetState().IsKeyDown(Keys.Up)) { cameraPosition += new Vector3(0, .05f, 0); } if (Keyboard.GetState().IsKeyDown(Keys.Down)) { cameraPosition += new Vector3(0, -.05f, 0); } // The Vector3.Transform() method just multiplies a matrix with a vector // Move Camera if (Keyboard.GetState().IsKeyDown(Keys.Q) && !shift) // left { Matrix forwardMovement = Matrix.CreateRotationY(camDirection); float speed = .1f; Vector3 v = new Vector3(-speed, 0, 0); v = Vector3.Transform(v, forwardMovement); cameraPosition.Z += v.Z; cameraPosition.X += v.X; } if (Keyboard.GetState().IsKeyDown(Keys.D) && !shift) // right { Matrix forwardMovement = Matrix.CreateRotationY(camDirection); float speed = .1f; Vector3 v = new Vector3(speed, 0, 0); v = Vector3.Transform(v, forwardMovement); cameraPosition.Z += v.Z; cameraPosition.X += v.X; } if (Keyboard.GetState().IsKeyDown(Keys.Z)) // forward { Matrix forwardMovement = Matrix.CreateRotationY(camDirection); float speed = .1f; Vector3 v = new Vector3(0, 0, -speed); v = Vector3.Transform(v, forwardMovement); cameraPosition.Z += v.Z; cameraPosition.X += v.X; } if (Keyboard.GetState().IsKeyDown(Keys.S)) // backward { Matrix forwardMovement = Matrix.CreateRotationY(camDirection); float speed = .1f; Vector3 v = new Vector3(0, 0, speed); v = Vector3.Transform(v, forwardMovement); cameraPosition.Z += v.Z; cameraPosition.X += v.X; } Matrix rotationMatrix = Matrix.CreateRotationY(camDirection); Vector3 forwardNormal = rotationMatrix.Forward; view = Matrix.CreateLookAt( cameraPosition, cameraPosition + (forwardNormal * 10f), Vector3.Up ); Monster1.Update(gameTime); base.Update(gameTime); }