0

モデルを(3D空間で)回転に対して前方に移動するにはどうすればよいですか?例えば:

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

関数moveは、オブジェクトを1単位前方に1単位左に移動する必要があります。私は試した:

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」は、90度ヨー(Y軸を中心に回転)することを意味します。

Matrix.CreateFromYawPitchRoll()は、その情報(rotation.Y)をパラメーターの1番目として必要とします。2番目のパラメーターとしてリストされています。

関数で名前が付けられているのと同じ順序でパラメータを配置することを忘れないでください:Yaw、Pitch、Roll。あなたはそれをピッチ、ヨー、ロールします。

于 2012-07-30T00:13:38.913 に答える