0

私はゲームを書いていますが、パフォーマンスを改善する必要があることに気づき始めています(ゲーム(市場)へのリンク)。

あなたがそれをチェックすることができないならば:それは鳥とのヘビのようなゲームです。あなたは最初の鳥を制御し(それがたどるパスを描く/十字キーを使用することによって)、小さな鳥の群れが一列にそれをたどります。鳥はアニメーション化されており、180°回転してミラーリングすることができます(鳥が飛んでいる場所によって異なります)。

現時点では、最初の鳥のみをアニメーション化し、次にそれを縮小して、各鳥を個別にアニメーション化するのではなく、4フレーム後に表示される非表示の要素に保存します(流体アニメーションの目的)。したがって、画面に表示される鳥ごとに、それぞれビットマップを持つ4つのオブジェクトがあります。さて、私の質問は、スプライトシートを作成して可能な回転数を減らす(たとえば、10°ごとに1セットのスプライト)か、各鳥のアニメーションを計算するか、それとも自分のやり方を維持するかです。

4

2 に答える 2

1

回転したスプライトシートを手作業で作成する意味はありません。1枚のスプライトシートをロードするだけです。次に、角度ごとにビットマップの配列を作成し、それぞれの上にベーススプライトシートを回転してコピーします。(アニメーションを処理するために配列の配列が必要な場合や、スプライトシートのフレームごとに個別に回転する必要がある場合があります)これにより、後で簡単にアートを変更することもできます。

何かのようなもの:

Bitmap baseFrame;
Bitmap rotatedFrame[]=new Bitmap[360/10];

...

Matrix rotationMatrix=new Matrix();
rotationMatrix.setRotate(n*10);
rotatedFrame[n]=Bitmap.createBitmap(baseFrame,0,0,
                                    baseFrame.getWidth(), baseFrame.getHeight(),
                                    rotationMatrix, false);

回転した画像の幅と高さは、ベース画像よりも大きくする必要がある場合があります。中心を中心に回転するように設定することもできますが、アイデアは得られます。

ところで、

ゲームのスクリーンショットを見ると、背景を描くと鳥を回転させるよりも大きな効果があるのではないかと思います。コードのプロファイルを作成して、各画像の描画にかかる時間を確認することをお勧めします。(http://developer.android.com/guide/developing/debugging/debugging-tracing.html)。背景がRGB_565形式で読み込まれていることを確認します。ソフトウェアでレンダリングすると、かなり高速になる可能性があります。

私は、Androidでの画像の回転が驚くほど高速で、何百もの小さなビットマップを適切なフレームレートで回転できることを発見しました。

于 2011-07-26T13:32:29.523 に答える
0

回転アニメーションの簡単な説明は次のとおりです。

http://androidtutorials60.blogspot.in/2013/09/simple-rotate-animation-in-android.html

于 2013-09-26T07:36:34.607 に答える