使用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)
我可以根据需要提供更多信息。
答案 0 :(得分:1)
Matrix.CreateLookAt的第二个参数不是相机所面向的方向,而是目标点。
如果您试图让相机向下看,请使用
Matrix.CreateLookAt(campos, campos + Vector3.Down, Vector3.Forward)
这将告诉相机始终查看相机下方一个单元的位置。
您的翻译可能效果不佳,因为相机没有看到您想要的点,因此看起来模型正在对角移动。