【发布时间】:2011-08-17 16:33:54
【问题描述】:
这是我的变换。我从一个简单的 2D 相机的例子中得到它。
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 如何在 draw 方法中使用它们的了解更少。到目前为止,我想把我的头发从无结果的搜索中拉出来......我只需要世界坐标来缩放缩放,这样在我的鼠标在预缩放 X.60 之前 Y.60 将在 X .600 Y.600 缩放后(即:缩放级别 0.1)。但是我的鼠标没有移动,只是世界变得更大(或缩小)。
【问题讨论】:
-
我目前正在消化这个矩阵教程,希望它能帮助我理解我做错了什么。 stevehazen.wordpress.com/2010/02/15/…
-
你试过改变 ViewportWidth 和 ViewportHeight 吗?我认为这可能会达到您想要的效果。
-
似乎所做的只是改变相机的位置。仍然在窗口中获得相同数量的坐标。无论缩放级别如何,它们似乎都锁定在 1:1。
-
能否包含在世界坐标中获取鼠标位置的代码?
-
我想通了...但是我的名声使我无法再回答我自己的问题 4 小时...对不起各位。