这是我的变换。我从一个简单的2D相机的例子中得到它。XNA/C#2D坐标缩放到3D视图矩阵的世界矩阵?
public Matrix Transform(GraphicsDevice graphicsDevice)
{
float ViewportWidth = graphicsDevice.Viewport.Width;
float ViewportHeight = graphicsDevice.Viewport.Height;
matrixTransform =
Matrix.CreateTranslation(new Vector3(-cameraPosition.X, -cameraPosition.Y, 0)) *
Matrix.CreateRotationZ(Rotation) *
Matrix.CreateScale(new Vector3(Zoom, Zoom, 0)) *
Matrix.CreateTranslation(
new Vector3(ViewportWidth * 0.5f, ViewportHeight * 0.5f, 0));
return matrixTransform;
}
如果我理解正确的话,它可以让世界和相机之间的辊(旋转),在变焦精灵规模的变化,并翻译为简单的上,下,左,右控制。但是,它不会改变Z的深度。
但我需要的是让游戏世界缩放,而不仅仅是绘制的精灵。我假设为了做到这一点,我需要改变相机与世界矩阵之间的Z距离。
我对编程非常新奇,对矩阵一般只有一个简单的理解。我对XNA如何在绘画方法中使用它们有所了解。到目前为止,我想让我的头发脱离寻找答案的无果而终......我只需要世界坐标来缩放缩放,以便在我的鼠标在预缩放X.60 Y.60之前将X .600 Y.600后缩放(即:缩放级别0.1)。但我的鼠标没有移动,只有世界变得更大(或缩小)。
我目前正在消化这种矩阵教程中,希望它能帮助我理解我做错了什么。 http://stevehazen.wordpress.com/2010/02/15/matrix-basics-how-to-step-away-from-storing-an-orientation-as-3-angles/ – RogueDeus
您是否试过改变ViewportWidth和ViewportHeight ?我认为这可能会产生你想要的效果。 –
所有似乎要做的就是改变相机的位置。仍然获得相同数量的窗口中的坐标。无论缩放级别如何,它们似乎都以1:1锁定。 – RogueDeus