0

如何相对于他的旋转向前移动模型(在 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;

但由于某种原因,它使模型向上移动。

4

1 回答 1

3

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

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

只需记住将参数按照它们在函数中命名的顺序放置:Yaw、Pitch 和 Roll。你有它俯仰,偏航,滚动。

于 2012-07-30T00:13:38.913 回答