![](/img/trans.png)
[英]How to remove just one Body exactly in array when collision? 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);
}
基本上,当生成矩形和精灵时,它们会向上移动,并且在屏幕顶部还有另一个矩形。检测到碰撞时,我不会删除矩形和精灵。
@ 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$1.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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.