2011-05-26 47 views
4

私はXNAゲーム開発のチュートリアルゲーム "シューティングゲーム"に基づいて少しゲームを作っています...少しの試行錯誤の後、私は自分のアニメーションスプライトを作って、画面。問題は、彼はいつも正しく直面しているということです。Cでスプライトを反転する方法#

キーイベントが押されるたびに正しい方向に向くように、これをどのように変更できますか(下の画像)

私はあなたが推測しているかもしれないが、これは私が思っていた以上に複雑かもしれないことを理解しているので、私はちょうど彼が動いているときに右と左に移動するときスプライトの顔を右にする方法を知る必要がある左。

image

事前にありがとうございます。

+2

決して決して、あなたの関数をIDFKのように呼び出さないでください。維持するのは地獄だろう。 –

+1

@Dhaivat Pandya:ポイントを取得するだけのこと、つまり「私は知っているわけではありません。 –

+0

lol。その後、その罰金。 –

答えて

2

通常、スプライトシートには各方向の画像が含まれます。実行時にイメージを反転することはできますが、不要なイメージ処理が追加されます。私は、アニメーションが焼き付けられたスプライトシートを作成し、実行時にどのフレームを表示するかを把握するだけでよいことをお勧めします。

See an example of a simple sprite sheet here

+0

スプライトシートは、各方向に1つのセルになります – rboarman

+0

次に、どのフレームを何時に演奏されましたか? – Zanrkvil

+0

@ジェイリッグス:母、ええ、私は別のものを見つけました。 –

5

また、あなたのSpriteBatch.Draw()方法にSpriteEffects.FlipHorizontallyオプションを渡すことによってこれを行うことができます。しかし、他の人が言っているように、これはスプライトシートを使うよりもオーバーヘッドが増えます。

0
SpriteEffects s = SpriteEffects.FlipHorizontally; 
int smX = 200; //smx is the 'x' coordinates. 

    public void runChar() 
    { 
     if (Keyboard.GetState().IsKeyDown(Keys.Left)) 
     { 
      smX -= 2; 
      s = SpriteEffects.FlipHorizontally; 
      //oposite direction. 
     } 
     else if (Keyboard.GetState().IsKeyDown(Keys.Right)) 
     { 
      smX += 2; 
      s = SpriteEffects.None; 
      //original direction. 
     } 
    } 

spriteBatch.Draw(sM, new Rectangle(smX, 200, 100, 100), null, Color.White, rotation, new Vector2(50, 50), s, 0f); 

これは、左右にテクスチャを「反転」します。

関連する問題