如何在达到一定距离时移除子弹? JAVA Libgdx

时间:2016-09-05 01:24:08

标签: 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处理子弹,但是我试着这样做而且我无法得到它......¿我们怎么能做到这一点?

1 个答案:

答案 0 :(得分:0)

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

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();
 }

我发现它有效,因为我开始在游戏画面中随机拍摄,游戏从未变慢或冻结!