LibGDXは初めてです...パーティクルエフェクトを弾丸オブジェクトにアタッチしようとしています。複数の弾丸を発射するプレーヤーがあり、発射された弾丸に続いて煙と炎を追加したいと思います。
問題は、毎回同じ効果が得られるわけではないということです。最初の弾丸の効果は私が望むように見えますが、他のすべての弾丸の後ろには短い軌跡があります。描く粒子がないように。
可能であれば、1つのパーティクルエミッタオブジェクトを使用したいと思います。すべての弾丸オブジェクトに複数のインスタンスを設定したくない。
各弾丸を描画した後、reset()メソッドを使用しようとしましたが、同じようには見えません。最初のものだけが問題ありません、他のすべては少しの間悪いように見えます。
これを行う方法はありますか?
ヘルプ!
これはコードスニペットです:
初期化:
bulletTexture = new Texture("data/bullet.png");
bulletTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
// Load particles
bulletFire = new ParticleEmitter();
try {
bulletFire.load(Gdx.files.internal("data/bullet_fire_5").reader(2048));
} catch (IOException e) {
e.printStackTrace();
}
// Load particle texture
bulletFireTexture = new Texture("data/fire.png");
bulletFireTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
// Attach particle sprite to particle emitter
Sprite particleSprite = new Sprite(bulletFireTexture);
bulletFire.setSprite(particleSprite);
bulletFire.start();
レンダリングメソッドの場合:
// Draw bullets
bulletIterator = bullets.iterator();
while (bulletIterator.hasNext()) {
bullet = bulletIterator.next();
bulletFire.setPosition(bullet.getPosition().x + bullet.getWidth() / 2,
bullet.getPosition().y + bullet.getHeight() / 2);
setParticleRotation(bullet);
batch.draw(bulletTexture, bullet.getPosition().x,
bullet.getPosition().y, bullet.getWidth() / 2,
bullet.getHeight() / 2, bullet.getWidth(),
bullet.getHeight(), 1, 1, bullet.getRotation(), 0, 0,
bulletTexture.getWidth(), bulletTexture.getHeight(), false,
false);
bulletFire.draw(batch, Gdx.graphics.getDeltaTime());
}