0

使用时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)

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

4

1 回答 1

1

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

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

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

这将告诉相机始终注视相机下方一个单位的点。

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

于 2013-04-11T16:09:08.067 回答