检测到碰撞时如何删除 Sprite? Libgdx

How to remove Sprite when collision is detected? Libgdx

每个随机时间(1.2 到 3 秒之间)创建一个矩形和一个精灵,每个生成的精灵对应一个矩形。

随机调用新的敌人方法:

public void newEnemy(){
        Sprite enemy= Pools.obtain(Sprite.class);
        enemy.set(enemySpr);
        enemy.setPosition(200,150);
        enemies.add(enemy);}

矩形也会发生同样的事情:

 public void newRect(){
        Rectangle rect=Pools.obtain(Rectangle.class);
        rect.set(enemyRect);
        rectangles.add(rect);
    }

基本上,当生成矩形和精灵时,它们会向上移动,在屏幕顶部还有另一个 rectangle.I 不想在检测到碰撞时删除矩形和精灵。

@Tenfour04 我刚刚试过你的建议,但我仍然得到错误。

while (enemyIterator.hasNext()){
            Sprite nextEnemy=enemyIterator.next(); //I get the error here..
           if(enemySpr.getY()+enemySpr.getHeight()>=treeObj.treeSpr.getY()){
               removeEnemy(nextEnemy);
           }

@Tenfour04 这是错误:

Exception in thread "LWJGL Application" java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
    at java.util.ArrayList$Itr.next(ArrayList.java:851)
    at com.dreamroad.savethetree.EnemyClass.update(EnemyClass.java:66)
    at com.dreamroad.savethetree.MyGdxGame.render(MyGdxGame.java:51)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:215)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.run(LwjglApplication.java:120)

Process finished with exit code 0

您可以将堆栈跟踪放在我不知道的另一边,即 removeEnemy (...) 及其工作原理,但这也许有帮助:

 while (enemyIterator.hasNext()){

     Sprite nextEnemy=enemyIterator.next(); //I get the error here.. -> push stact trace

      if(enemySpr.getY()+enemySpr.getHeight()>=treeObj.treeSpr.getY()){

           enemyIterator.remove();
           //removeEnemy(nextEnemy);
       }
 }