0

電話のセンサーを使用して 3D ゲームの世界を見回すショーケース ゲームを作成しています。近くの敵を表示するレーダーをxnaで作成したいと思います。MotionReader の回転行列を使用します。RotationMatrix でこれを計算するにはどうすればよいですか? コンパス (見出し) を使用して y 回転行列を作成するときのしくみを知っています。

Matrix rotation = Matrix.CreateRotationY(MathHelper.ToRadians((float)trueHeading));
EffectRadar.View = rotation * Matrix.CreateLookAt(new Vector3(0, 1.1f, 0), new Vector3(0, -1, 0), new Vector3(0, 0, -1));

私はモーションリーダーを使用しているので、デバイスにジャイロスコープがあり、コンパスの見出し用に独自のフィルターを作成したくない場合は、より良い値が得られます。

私はこれを試しましたが、電話を投げるとうまくいきません:

Matrix rotation = Matrix.CreateRotationX(MathHelper.PiOver2) * motion.CurrentValue.Attitude.RotationMatrix;
EffectRadar.View = Matrix.CreateLookAt(new Vector3(0, 1.1f, 0), new Vector3(0, -1, 0), new Vector3(0, 0, -1));
EffectRadar.Projection = Matrix.CreateOrthographic(FarClippingDistance / 2.0f, FarClippingDistance / 2.0f, 1.0f, 10.0f);
foreach (Opponent item in opponentList){
    Vector3 vecProj = RadarViewport.Project(new Vector3(item.Position.X, 0.0f, item.Position.Z),
        EffectRadar.Projection,
        rotation,
        Matrix.Identity
    );

    EffectRadar.World = Matrix.CreateTranslation(vecProj.X, 0.0f, vecProj.Z);
    foreach (EffectPass pass in EffectRadar.CurrentTechnique.Passes)
    {
        pass.Apply();
        GraphicsDevice.DrawUserPrimitives<VertexPositionColor>(PrimitiveType.TriangleStrip, VerticesColorRed, 0, 2);
    }
}

あなたが私を助けてくれることを願っています。

4

1 に答える 1

0

Riemers XNA チュートリアル > マウス カメラなど、一人称カメラの作成方法に関する記事が役立ちます。これには必要なもの、ヨーとピッチに対応する leftRightRot と upDownRot があります。ロールが必要な場合は、アップベクターの向きを変更する必要がありますが、残りの作業が完了したら、これは簡単なはずです。

于 2012-05-04T14:17:35.793 に答える