2009-08-14 18 views
2

私は現時点でトップダウンビューの2Dゲームで作業しており、スプライトとスプライトの処理については勉強中です。私の質問は、32方向に回転できるスプライトのセットを扱う方法です。トップダウンビューゲームの回転スプライトを処理する最善の方法は何ですか

現在のところ、指定されたオブジェクトにはスプライトシートがあり、アニメーションの向きはオブジェクトの向きが常に0度になっています。さて、オブジェクトは32方向にも回転できるので、オリジナルのスプライトシートを処理する最良の方法は何ですか?私の現在の最良の推測は、オブジェクトが最初にゲームにロードされたときに、基本的に32個のスプライトシートを動的に作成し、その後そのオブジェクトのすべてのインスタンスがそれらのスプライトシートを共有するようにすることです。

とにかく、これに関するアドバイスは参考になります。私が質問を言い換える必要があるかどうかを教えてください、私はその種類が奇妙なものであることを知っています。ありがとう

編集:私はより明確にすると思います。私が持っている場合、たとえば、5フレームのアニメーションを2つ持つオブジェクトは、作成して整理するのに非常に簡単なスプライトシートです。シンプルな2x5グリッド(またはレイアウト方法に応じて5x2)です。しかし、問題は、2つのアニメーションを32方向に回転させる必要があることです。つまり、最終的に320のスプライトが作成されます。パフォーマンスとフレームレートが懸念されているので、私は間違っていると私に言い返すつもりです。毎フレームのスプライトを回転させることはオプションではありません。だから、これらの2つのアニメーションを構成するこれらの320のスプライトはどのように整理されるべきですか?それは32枚の2x5のスプライトシートとしてその

  • 考える
  • 、個々のフレームにスプライトシートを上に分割し、次にアレイフレームあたり32件の異なる方向32個の方向スプライトの(それほど10のアレイを有することが良いだろう)
  • その他....?
  • 問題ではありませんか?

おかげ

答えて

1

通常、プロセッサ時間またはメモリを犠牲にして、2つの間のバランスをとる必要があります。あなたのプロセッサーに大きな限界があるか、あるいは高価なものをたくさん計算していない限り、すべてのものをメモリに入れる本当の理由はありません。変換を使っていくつかのスプライトを回転させることは安価であり、32倍の情報をメモリに保存する価値はない - 特に、情報はたくさんの画像であり、画像は大量のメモリを消費するため、相対的に言えば。

2

あなただけのスプライトの変換の回転部分を設定することにより、直接スプライトを回転させることができます。

いくつかのサンプルコードでは、このpygame tutorialのChimpスプライトをチェックしてください。チンパンジーがめまぐるしいときは、スプライトを回転させます。

+0

申し訳ありませんが、私はそれが動作することを意味します。しかし、正直言って、私はすでにそれをやっていました。スプライトとその回転を最も効果的な方法で整理する方法が私の疑問ですね。言い換えれば、私はそれを言い換える必要があります。 –

4

スプライトの32方向は32回転に換算して11.25度になります。

事前計算されたイメージの数を8に減らすと、最初の90度(11.25, 22.5, 33.75, 45.0, 56.25, 67.5, 78.75, 90.0)を計算し、フリップ操作を動的に使用することができます。フリップは、画像がバッファからコピーされる順序を変更するだけなので、はるかに高速です。

たとえば、101.25度回転した画像を表示する場合は、事前計算された画像を67.5度読み込んで垂直方向に反転します。

は、私はちょうどあなたのグラフィックが対称である場合にのみ;-)

現代のコンピュータの話、あなたは何を最適化する必要がない可能性があります動作することを実現しました。スプライトをあらかじめ計算することによって使用されるメモリは、おそらく無視できます。しかし、組み込みデバイス用にプログラミングしているときは問題ありません。

+0

なぜ私には起こりませんか分かりません最初の90度だけ回転させます。いい考え ;) –

関連する問題