当子弹到达一定距离时,如何取出子弹?JAVA Libgdx



我希望我的程序删除在播放器窗口中不再可见的对象以节省内存。我尝试这样做:

在游戏类(渲染方法)中:

if(fireDelay >= 0.4f){
           Laser laser = new Laser();
           laser.shoot(nave.getRotation(), nave.getX(), nave.getY());
           escenario.addActor(laser);
           if(laser.getLimit()){
             escenario.addAction(Actions.removeActor(laser));
             fireDelay = 0;       
           }
       }

在激光类

public boolean getLimit(){
    return limit;
}
@Override
public void act(float dt){
    super.act(dt);
    elapsedTime += dt;
    distancia += dt;
     setRotation(rotacion);      
    if(distancia == 0.4f)
        limit = true;
}

但显然……不起作用……我也看到你可以用arraylist处理子弹,但我试着这样做,我不能得到它…我们如何才能做到这一点?

我找到解决方案了!我只需要添加这行代码:

laser.addAction(Actions.sequence(Actions.delay(2), Actions.fadeOut(0.5f), Actions.visible(false)) );

在拍摄之前,将对象存储在arrayList中,然后迭代并删除它们。

 removeList = new ArrayList<Laser>();
 for ( Laser laser : laserList )
 {
 wraparound( laser );
 if ( !laser.isVisible() )
 removeList.add( laser );
 }
 for (Laser ba : removeList)
 {
 ba.destroy();
 }

我发现它是有效的,因为我开始在整个游戏屏幕随机射击,游戏从来没有变慢或冻结!

最新更新