2013-04-11 89 views
0

当使用Matrix.CreateTranslation(x,y,z)时,我得到了奇怪的结果。我已经使用固定值进行测试,每次一个变量和已经确定以下内容:XNA模型翻译是bizzarre

  • 当改变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

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

如果试图使相机往下看,用

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

这会告诉相机总是看一个单位的摄像头下方的点。

您的翻译可能无法正常工作,因为相机没有看到您想要的点,因此看起来像模型正在对角线移动。

+0

好的,以前当我试过这个模型时,根本不会显示出来。自那以后,我已经解决了这个问题,但翻译问题依然存在每增加一个勾号我都会在X的位置添加5,并且它会移动到屏幕的右下角。 – Ares513 2013-04-11 22:24:06