【发布时间】:2010-09-11 18:28:37
【问题描述】:
我有一个带有这个平移矩阵的二维相机:
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));
这适用于原点是相机中心的旋转/缩放。
现在我正在尝试获取世界上的鼠标坐标。
我尝试只使用逆变换,但这只会导致 NaN 错误。 我猜我需要为鼠标坐标设置另一个平移矩阵,与当前坐标相反,但我不知道这是如何设置的
我有这个,
MousePosition = new Vector2((Mouse.GetState().X - DrawTransform.Translation.X) * (1 / Gamecode.Camera1.Scale), (Mouse.GetState().Y - DrawTransform.Translation.Y) * (1 / Gamecode.Camera1.Scale));
但这没有考虑轮换
【问题讨论】:
-
你弄清楚如何获得旋转部分了吗?
标签: xna camera 2d translation linear-algebra