Mausereignis aktualisiert die Kamerarotation in Winforms nicht
Meine App verfügt über ein benutzerdefiniertes Bedienfeld, mit dem der XNA-Bildschirm in einer WinForm angezeigt wird. Ich habe momentan ein Testmodell ohne Probleme angezeigt und arbeite jetzt an der Kamerabewegung. Meine Kamera ist eine freie Kamera (die nicht auf ein bestimmtes Ziel ausgerichtet sein muss), aber ich habe Probleme, mit der Maus das Gieren und die Neigung der Kamera um die eigene Achse zu aktualisieren. Ich dachte, dass vielleicht etwas mit meiner Aktualisierungsmethode nicht stimmt, aber das war nicht der Fall, da die Kamera-Aktualisierungen mit vorwärts und rückwärts durchgeführt werdenKeyboardState
. Aber ich habe keine Ahnung, warum das so istMouseState
funktioniert nicht
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();