XNA模型翻译很奇怪

时间:2013-04-11 15:46:15

标签: vb.net 3d xna camera

使用Matrix.CreateTranslation(x,y,z)时,我得到了奇怪的结果。我已经使用固定值进行了测试,一次测试一个变量,并确定了以下内容:

  • 当改变X坐标时,模型从左上角移动到右下角。

  • 当改变Y坐标时,模型会按原样上下移动。

  • 我不打算改变Z坐标,但由于我的程序的性质,我无法确切地知道它的作用。

我画了我的模型。旋转工作正常。我正在以正确的顺序执行翻译(至少我认为):scale * rotation * translation

我认为问题在于我的相机设置,但我不知道究竟是什么问题。我正在尝试创建一个自上而下的RTS相机。

以下是我的相机设置:

campos = new Vector3(5000.0F, 5000.0F, 5000.0F)
effect.View = Matrix.CreateLookAt(campos, Vector3.Down, Vector3.Up)

我可以根据需要提供更多信息。

1 个答案:

答案 0 :(得分:1)

Matrix.CreateLookAt的第二个参数不是相机所面向的方向,而是目标点。

如果您试图让相机向下看,请使用

Matrix.CreateLookAt(campos, campos + Vector3.Down, Vector3.Forward)

这将告诉相机始终查看相机下方一个单元的位置。

您的翻译可能效果不佳,因为相机没有看到您想要的点,因此看起来模型正在对角移动。