8

私は LibGdx で 2D シューティング ゲームに取り組んでいます。私は LibGdx の初心者であり、それがどのように機能するかを理解しようと懸命に努力していることに言及しなければなりません。私は Java と Android プログラミングの経験が数年あるので、ゲームの概念を理解しています。

スプライトオブジェクトをフェードアウトする方法があることに興味があります。

画面に敵がいて、敵が死んだら、リストから敵オブジェクトを削除し、計算と交差ロジック内で無視したいと考えています。

しかし、敵のスプライトが画面にもう少し長くとどまり、ゆっくりとフェードアウトしたいです。

LibGdx でこれを処理する良い方法はありますか...または、余分な「フェードアウト」フレームを描画する必要があります...そしてアニメーション内で処理する必要があります...

この種のものをサポートする組み込み機能はありますか?

Tnxたくさん!ブレーンストーミングを開始し、スプライトの描画で寿命を失う前に、誰かがそれを片付けてくれる必要があります。

4

2 に答える 2

13

時間の経過とともに「アルファ」を減少させることで、死んだ敵のスプライトをフェードアウトできるはずです。これを行う最も簡単な方法は、バッチを使用することだと思いますsetColor()

batch.setColor(1.0f, 1.0f, 1.0f, fadeTimeAlpha);
batch.draw(deadEnemySprite, ...);

を計算する必要がありますfadeTimeAlpha(時間をかけて 1.0f から 0.0f にします)。メソッドが役立つ場合があり
ます。Color.lerp()

各スプライトの色を設定するとバッチがフラッシュされるかどうかはわかりません (そうなると思います)。そのため、パフォーマンス コストが比較的高くなる可能性があります (バッチ スプライトの描画が事前に適切に動作していたと仮定すると)。

于 2013-03-11T16:37:50.097 に答える
3

スプライトを使用すると、.setAlpha を使用できます。

alpha += (1f / 60f) / 2;
icon.setAlpha(alpha);

まず、アルファ システム: 0.0 から 1.0 の間の数値を指定します (0 から 255 ではありません)。

上記のコード スニペットでalphaは、float 値でiconあり、Sprite です。この場合、アルファは (最初は) 0 です。

計算のために:

(1f / 60f) / 2;

1f は最大アルファ

60fはFPS

そして2は、これを2秒以上にしたいからです。

(LibGDX は初めてなので、必ずしも 60 ではないため、FPS を取得する方法がわかりません)。

割る数を変更する (関連する場合は FPS を変更する) と、アルファから追加 (または削除) される量と、アニメーションが終了する時間が変わります

于 2017-07-20T13:02:08.147 に答える