Событие мыши не будет обновлять поворот камеры в winforms
Мое приложение имеет настраиваемую панель для отображения экрана XNA в WinForm. В настоящее время я без проблем показал тестовую модель и теперь работаю над движением камеры. Моя камера - свободная камера (она не обязана смотреть на какую-либо конкретную цель), но у меня возникли проблемы с настройкой мыши для обновления рыскания и тангажа камеры по ее собственной оси. Я подумал, может быть, что-то не так с моим методом обновления, но это не так, потому что обновления камеры движутся вперед и назад, используяKeyboardState
, Но я понятия не имею, почемуMouseState
не работает
FreeCamera.cs
using XNAButtonState = Microsoft.Xna.Framework.Input.ButtonState;
....
MouseState pastMouseState;
private float rotationSpeed_ = 1f / 60f;
private float yaw_, pitch_;
...
private void updateMatrix()
{
Matrix rotationMatrix = Matrix.CreateRotationX(pitch_) *
Matrix.CreateRotationY(yaw_);
Vector3 forward = new Vector3(0, 0, 1);
forward = Vector3.Transform(forward, rotationMatrix);
viewMatrix_ = Matrix.CreateLookAt(Position, Position + forward, Up);
projectionMatrix_ = Matrix.CreatePerspectiveFieldOfView(
MathHelper.PiOver4, 16.0f / 9.0f, 0.1f, 100000.0f);
}
private void cameraInput()
{
KeyboardState keyboardState = Keyboard.GetState(); <-- updates
currentMouseState = Mouse.GetState(); <-- not updating
if (currentMouse.LeftButton == XNAButtonState.Pressed)
pitch_ -= rotationSpeed_;
if (keyboardState.IsKeyDown(Keys.W))
move(1);
if (keyboardState.IsKeyDown(Keys.S))
move(-1);
pastMouseState = currentMouseState;
}
public void update()
{
cameraInput();
updateMatrix();