2011-09-18 14 views
0

私は3Dモデルを制御したい、それをあらゆる方向に動かすが、私はこれを行う方法を知らない。誰もが考えている?XNAで3Dモデルを移動するには?

+0

ハンドル入力キー、モデルのx/y/z位置を変更し、利益を得ます。 – thedaian

+0

左または右に曲がりたい場合、どのように処理する必要がありますか? – beanhorstmann

+0

誰でも私にシンプルなデモゲームを作ったり、船を引いたり(3D)、キーボードを使ってそれを制御したり、矢印を左または右に回して左または右に、矢印を上に移動したり、矢印を下にして後ろに移動したりすることができます。助けて! – beanhorstmann

答えて

1

あなたは、モデルのワールド変換をエフェクトするだけで済みます。

あなたが位置を変更することができ、あなたの更新方法で
Matrix World = Matrix.CreateWorld(position, forward, up); 

LastPosition = Position; 

    if (IsKeyDonw(Left) Position -= Vector3.UnitX * Speed * ElapsedTime; ForwardDirty = true;  
    if (IsKeyDonw(Right) Position += Vector3.UnitX * Speed * ElapsedTime; ForwardDirty = true;  
    if (IsKeyDonw(Up) Position -= Vector3.UnitZ * Speed * ElapsedTime; ForwardDirty = true;  
    if (IsKeyDonw(Down) Position += Vector3.UnitZ * Speed * ElapsedTime; ForwardDirty = true;  


// the forward is the direction where will point your model. 

if (ForwardDirty) { 
    Forward = Position - LastPosition; 
    Forward.Normalize(); 
    ForwardDirty = false; 
} 

また、前方ベクトルであなたの動きをベースに、または現在で、最終的な前進を補間角度変化を滑らかにすることができます...

+0

+1:私は 'ForwardDirty'フラグを設定してボタンのプレスの' if'ステートメントの中で 'Forward Vector3'を調整するだけで気にしません。 –

関連する問題