我是 LibGDX 的新手……我正在尝试将粒子效果附加到子弹对象上。我有播放器,它会发射多发子弹,我想在发射的子弹之后添加一些烟雾和火焰。
问题是我每次都没有得到相同的效果。最初第一个子弹效果看起来像我想要的,每个其他子弹后面都有一个较短的轨迹。就像没有要绘制的粒子一样。
如果可能的话,我想使用一个粒子发射器对象。不希望每个子弹对象都有多个实例。
在绘制每个项目符号后,我尝试使用 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());
}