Libgdx和Box2d /粒子不是跟随的主体

问题描述:

我只是切入追逐。 所以我正在制作这个游戏,你应该用你的法术杀死其他物体,我已经创建了子弹和他们的身体,我们都很好,它的工作。 但我想让它看起来特别和“魔术般”,所以我决定使用粒子。我所做的颗粒,并把和使他们遵循这一代码子弹机构:Libgdx和Box2d /粒子不是跟随的主体

for (Bullet bullet : bullets) { 
      bullet.update(dt); 
      if (!bullet.destroyed){ 
       fireFx.start(); 
       fireFx.setPosition(bullet.getPosition().x, bullet.getPosition().y); 
       fireFx.update(dt); 
      } 
     } 

但有当我火多发子弹颗粒刚刚从所有的第一子弹dissappearing我解雇,只是一个问题出现在最后一个。有人能带我参加这个吗?

-----------------编辑-----------------

现在我有另一个问题当子弹与某些东西碰撞时会被破坏,并且渲染方法停止工作,但是我希望它继续渲染,直到动画结束。像我不希望他们突然消失这里是我的代码为:

for(int i = 0; i<bullets.size; i++){ 
     if(!bullets.get(i).destroyed && !bullets.get(i).fireFx.isComplete()) 
       bullets.get(i).fireFx.draw(game.batch); 
    } 

fireFx.isComplete()不能正常工作是什么原因?

+0

单独创建粒子的每一颗子弹 – Aryan

+0

@AbhishekAryan,如何做到这一点?我试过创建一个ArrayList,但它似乎没有工作:// –

+0

什么是fireFx的类型?文档在isComplete()上说了些什么? –

问题是,您正在更新单个粒子以使列表中的所有项目符号的坐标有效地保持列表中最后一个项目符号的坐标。你可以维护一个将子弹映射到粒子上的映射,但是当创建一个子弹时,我会实例化一个fireFx对象并将它添加到子弹对象中。然后,在子弹#更新方法,你可以调用粒子更新方法:

public void update(float dt) { 
    [...] 
    if (!this.isDestroyed()) { 
     [...] 
     this.fireFx.start(); 
     this.fireFx.setPosition(this.getPosition().x, this.getPosition().y); 
     this.fireFx.update(dt); 
     [...] 
    } 
    [...] 
} 
+0

谢谢实际上的工作,但现在我已经得到了另一个问题,我似乎无法来解决这个问题.. 如果我将修改我的问题你可以看看^^ –