2012-02-21 9 views
1

XNAでシンプルなゲームを作っています(Windowsの場合は違いがあります)、プレーヤーが右に動くと、次のコードを使用して船のモデルを回転させて見せます船が艦隊に傾いているように:モデルローテーションを容易にする

RotationMatrix = Matrix.CreateRotationX(MathHelper.PiOver2) * 
       Matrix.CreateRotationY(0.4f); 

それは動作しますが、それはすぐに希望の回転に船をポップします。私はむしろ数フレーム以上で楽になるでしょう。次のように参照するために、回転行列が宣言されました:

public Matrix RotationMatrix = Matrix.CreateRotationX(MathHelper.PiOver2); 

私はリーンを滑らかにするために何ができますか?

答えて

1

私はあなたのコードに時間を含める必要があると思います。 XNAでは、あなたは、そう、あなたはこのような何かしようとする(例えば、Game.Draw方法で)GameTimeオブジェクトへのアクセス権を持っている:このコードが有効である場合、私は今だ場所から

private float _seconds = 0; 
protected override void Draw(GameTime gameTime) 
{ 
    if (_seconds < 1) 
    { 
     _seconds += gameTime.ElapsedGameTime.TotalSeconds; 
    } 
    RotationMatrix = Matrix.CreateRotationX(MathHelper.PiOver2) * 
     Matrix.CreateRotationY(0.4f * _seconds); 
    base.Draw(gameTime); 
} 

は、私がチェックすることはできませんが、これは単なるアイデアです;)。

+0

うん、それは動作します。私は変数を船級クラスのパブリックフロートにして、それをより簡単に追跡できるようにしました。ありがとう! – Fibericon

関連する問題