0

開始位置vector3と回転vector3がある場合、移動方向を示すベクトルを取得するにはどうすればよいですか?正規化されたベクトルを取得して、それがどのように回転したかを示しますが、もちろん、それは移動方向ではなく、どのように回転したかを示しただけです。つまり、yで回転すると、yで回転したベクトルをnormailingするのではなく、xとzでの移動方向に影響を与えるはずです。これは、yで回転したことを示すだけです。

4

2 に答える 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を使用する場合に役立つリンクをいくつか提供しました。

クォータニオン構造(MSDN)

Quarternionチュートリアル(MSDN Social)

XNAでのQuarternionローテーション(Stackoverflowの質問)

于 2013-02-28T16:20:32.397 に答える