J'ai une caméra 2D avec cette matrice de traduction:XNA - souris Obtenir les coordonnées d'un système de caméra 2D avec rotation/zoom/translation
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));
Ce qui fonctionne pour Rotation/Zoom où l'origine est le centre de la caméra.
Maintenant, j'essaie d'obtenir les coordonnées de la souris dans le monde.
J'ai essayé d'utiliser une transformation inverse, mais cela a juste entraîné des erreurs NaN. Je suppose que je dois mettre en place une autre matrice de traduction pour les coordonnées de la souris, un revers de l'actuel, mais je ne peux pas comprendre comment cela est mis en place
Je cela,
MousePosition = nouveau Vector2 ((Mouse.GetState(). X - DrawTransform.Translation.X) * (1/Gamecode.Camera1.Scale), (Mouse.GetState(). Y - DrawTransform.Translation.Y) * (1/Gamecode. Camera1.Scale));
Mais cela ne prend pas en rotation du compte
Avez-vous travaillé sur comment obtenir la partie rotation? – Nidonocu