XNA - Mauskoordinaten mit einem 2D-Kamerasystem mit Rotation / Zoom / Übersetzung erhalten
Ich habe eine 2D-Kamera mit dieser Übersetzungsmatrix:
Transform = Matrix.CreateTranslation(new Vector3(-Position.X, -Position.Y, 0)) *
Matrix.CreateRotationZ(Rotation) *
Matrix.CreateScale(new Vector3(Scale, Scale, 0)) *
Matrix.CreateTranslation(new Vector3((GraphicsDevice.Viewport.Width * 0.5f), (GraphicsDevice.Viewport.Height * 0.5f), 0));
Was für Rotation / Zoom funktioniert, wobei der Ursprung die Mitte der Kamera ist.
etzt versuche ich, die Mauskoordinaten der Welt zu ermittel
Ich habe versucht, nur eine inverse Transformation zu verwenden, aber das führte nur zu NaN-Fehlern. Ich schätze, ich muss eine andere Übersetzungsmatrix für die Mauskoordinaten einrichten, eine Umkehrung der aktuellen, aber ich kann nicht herausfinden, wie dies eingerichtet ist
Ich habe das
MousePosition = new Vector2 ((Mouse.GetState (). X - DrawTransform.Translation.X) * (1 / Gamecode.Camera1.Scale), (Mouse.GetState (). Y - DrawTransform.Translation.Y) * (1 / Gamecode.Camera1.Scale));
Aber das berücksichtigt Rotation nicht