開始位置vector3と回転vector3がある場合、移動方向を示すベクトルを取得するにはどうすればよいですか?正規化されたベクトルを取得して、それがどのように回転したかを示しますが、もちろん、それは移動方向ではなく、どのように回転したかを示しただけです。つまり、yで回転すると、yで回転したベクトルをnormailingするのではなく、xとzでの移動方向に影響を与えるはずです。これは、yで回転したことを示すだけです。
2 に答える
1
ある時点で、おそらくその「回転Vector3」を取得し、それからマトリックスを作成します。Matrix.Forward
その行列には、「回転Vector3」に対応する方向であるVector3プロパティ( )があります。すでに持っているマトリックスをいじりたくない場合は、このメソッドでうまくいくはずです。
Vector3 DirectionToTravel(bool rotationVecIsInRadians, Vector3 rotationVec)//rotation vec must not be normalized at this point
{
Vector3 result;
if (!rotationVecIsInRadians)
{
rotationVec *= MathHelper.Pi / 180f;
}
float angle = rotationVec.Length();
rotationVec /= angle; //normalizes rotation vec
result = Matrix.CreateFromAxisAngle(rotationVec, angle).Forward;
return result;
}
于 2013-02-28T16:04:03.477 に答える
0
Steve Hの答えに加えて、3D空間でより効果的に回転を行うには、Quarternionsを使用する必要がある場合があります。Quarternionsを使用する場合に役立つリンクをいくつか提供しました。
于 2013-02-28T16:20:32.397 に答える