【发布时间】:2013-03-02 18:55:52
【问题描述】:
我是 LibGDX 的新手...我正在尝试将粒子效果附加到子弹对象。 我有播放器,它会发射多发子弹,我想在发射的子弹之后添加一些烟雾和火焰。
问题是我每次都没有得到相同的效果。 最初第一个子弹效果看起来像我想要的,每个其他子弹后面都有一个较短的轨迹。就像没有要绘制的粒子一样。
如果可能的话,我希望使用一个粒子发射器对象。不希望每个子弹对象都有多个实例。
在绘制每个项目符号后,我尝试使用 reset() 方法,但它看起来又不一样了。只有第一个还好,其他的看起来有点糟糕。
有没有办法做到这一点?
救命!
这是代码sn-p:
初始化:
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());
}
【问题讨论】:
-
我认为效果会在一段时间后“耗尽”(它应该在编辑器中有一个“持续时间”)。
if (bulletFire.isComplete()) { bulletFire.start(); }之类的东西有帮助吗? -
不,刚开始看起来好一点……但在几颗子弹之后,同样的事情发生了。我应该使用粒子发射器阵列吗?不确定这是否有必要。
-
我添加了 Array
这样它对每个子弹都有效。我的问题是这样使用它是否有效?