将模型相对于其旋转XNA向前移动

本文关键字:移动 XNA 旋转 模型 相对于 | 更新日期: 2024-07-27 09:36:55

如何将模型(在三维空间中)相对于其旋转向前移动?例如:

rotation = new Vector3(0, MathHelper.ToRadians(90), 0);
obj.Move(Vector3.Forward);

移动功能必须将对象向左移动一个单位,向前移动一个单元。我试过了:

Matrix rotation = Matrix.CreateFromYawPitchRoll(rotation.x, rotation.y, 0);
Vector3 translation = Vector3.Transform(Vector3.Forward, rotation);
this.position += translation;
translation = Vector3.Zero;

但出于某种原因,它将模型向上移动。

将模型相对于其旋转XNA向前移动

矢量3分量"rotation.Y"表示您希望偏航(绕Y轴旋转)90度。

Matrix.CreateFromYawPitchRoll()希望将该信息(rotation.Y)作为参数中的第一个。您已将其列为第二个参数。

只需记住将参数按函数中命名的相同顺序放置:偏航、俯仰,然后滚动。你有俯仰,偏航,滚转。