2012-02-23 14 views
4

私はXNAを初めて使い、小惑星ゲームを構築しています。私は宇宙船を私が望む方向に前進させるためにいくつかの問題を抱えています。矢印キーを押すと、エンジンが始動し、宇宙船の回転と同じ方向に宇宙船を移動させたいのですか?ヘルプはpreciateされています!私は私の宇宙船であるサブクラスを追加します。 Drawメソッドとその変数はメインクラスにあります。私はEngineOnメソッドで何を持っているのか分かりません。スプライトを回転方向の値の方向に移動しますか?

class Spaceship: GameObject 
{ 

    // Konstruktor 
    public Spaceship(Texture2D texture, Vector2 position): base(texture, position) 
    { 

    } 

    public override void Update() 
    { 
     direction = new Vector2((float)Math.Cos(rotation), (float)Math.Sin(rotation)); 
     position += direction * speed; //position = position + direction 
     //base.Update(); 
    } 

    // Metod som beräknar rymdskeppets färd i riktningen 
    public void EngineOn() 
    { 
     Update(); 
    } 

    // Metod som beräknar rymdskeppets rotation motsols 
    public void RotateLeft() 
    { 
     rotation -= rotationSpeed; 
    } 

    // Metod som beräknar rymdskeppets rotation medsols 
    public void RotateRight() 
    { 
     rotation += rotationSpeed; 
    } 

    // Metod som beräknar bana för avlossade skott 
    public void Fire() 
    { 

    } 
} 
+0

あなたの問題は何ですか?船は動かず、間違った方向に動くか、何? – Thaven

+0

船はその方向に前進しません。それは回転することができます。 –

+0

と速度プロパティが異なる0? ;) – Thaven

答えて

3
public void EngineOn() 
{ 
    speed = 20; 
} 
public void EngineOff() 
{ 
    speed = 0; 
} 

P.S.あなたのスピードはCPUです。デルタタイムにあなたのスピードを乗じてください。

public override void Update(GameTime gameTime) 
{ 
    direction = new Vector2((float)Math.Cos(rotation), (float)Math.Sin(rotation)); 
    position += direction * speed * gameTime.ElapsedGameTime.Milliseconds; 
} 
+0

ありがとうございますが、まだ進んでいません!奇妙なこと、私は間違って何をしたでしょうか? –

+0

あなたの方向はおそらく(0、1)です。フォーミュラのSinとCosが正しいです。ローテーションは常に0ですか?たとえば、方向を強制的に(0.4、0.6)にして天気を見てください。船はまだ他の方向に動きます。 – AvrDragon

+0

どの方向にも動いていません!それは同じ位置でのみ回転します。 –

関連する問題