相对于他的旋转XNA向前移动模型

时间:2012-07-27 15:13:03

标签: c# matrix xna

如何相对于他的旋转向前移动模型(在3D空间中)? 例如:

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

函数move必须将对象一个单元向前移动到一个单元的左侧。 我试过了:

Matrix rotation = Matrix.CreateFromYawPitchRoll(rotation.x, rotation.y, 0);

Vector3 translation = Vector3.Transform(Vector3.Forward, rotation);
this.position += translation;
translation = Vector3.Zero;

但出于某种原因,它会推动模型的发展。

1 个答案:

答案 0 :(得分:3)

你的vector3组件'rotation.Y'意味着你想要偏航(绕Y轴旋转)90度。

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

请记住将params按照它们在函数中命名的顺序放置:Yaw,Pitch,然后Roll。你有它的俯仰,偏航,滚动。