2012-02-24 7 views
0

スプライトのパスを計算するためにいくつかのコードを使用します。スプライトテクスチャの前面が上を向いていて、スプライトを動かす方向ですが、スプライトの向きはスプライトのテクスチャの右になります。だから私はそれを新しい方向に動かすと横方向に動きます。私の質問が不明確でないことを願っていますか?スプライトテクスチャの方向を上向きにするように変更する解決策がある場合、ヘルプは事前定義されています。スプライトが間違った方向にある

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


public virtual void Draw(SpriteBatch spriteBatch) 
    { 
     spriteBatch.Draw(texture, position, null, Color.White, rotation, origin, scale, SpriteEffects.None, 0f); 
    } 
+1

コードは、右私には見えるが、それはおそらく間違っているに直面して、あなたのイメージです方向。あなたのペイントアプリケーションでは、==右。 – MattDavey

+0

あなたの 'Cos'と' Sin'は正しい方法ですか? 'Vector2'コンストラクタでそれらを入れ替えるとどうなりますか? –

+1

シンプルな方法はテクスチャを変更して直面しているようだが、宇宙船が上を向いている場合は小惑星ゲームなので、よりよく見えた。 –

答えて

1

簡単な修正:

// Change it to +MathHelper.PiOver2 if it goes the wrong way 
spriteBatch.Draw(texture, position, null, Color.White, rotation-MathHelper.PiOver2, origin, scale, SpriteEffects.None, 0f); 

だけ減算(または追加)90度回転からあなたがそれを描くとき

+0

興味深いですが、スプライトが上向きに変わったばかりですが、それでもまだ右に草刈りしています!もう少しお手伝いできますか? –

+0

私の例で示されているように、 'rotate'のすべてのインスタンスを変更します。 – annonymously

+0

うーん、今すぐ取得します!ありがとう!しかし、私はまだ-90度が真っ直ぐに上がらない理由を疑問に思っていますが、左を指していますか?右に0度、右に-90度上がっていませんか? –

関連する問題