我在网上搜索了几个小时的高低,但无法找到这个确切问题的例子。如果你正在阅读这种恐惧,那么答案就在下面。
如果使用2个libgdx数组和迭代器来检查两种对象类型的边界矩形之间的碰撞,则可能会遇到以下问题:
第二个迭代器仅检测第一个数组中第一个对象的冲突。这方面的一个例子是:
您的代码如下所示:
Iterator<Enemy> iterEn = arrayEnemies.getIterator();
Iterator<Bullet> iterBul = arrayBullets.getIterator();
while (iterEn.hasNext){
Enemy e = iterEn.next();
while (iterBul.hasNext(){
Bullet b = iterBul.next();
if (b.isOutOfBounds)iterBul.remove();
if (b.getRectangle().overlaps(e.getRectangle()){
iterBul.remove();
iterEn.remove();
}
}
}
答案 0 :(得分:0)
如果声明两个迭代器并希望在另一个迭代器中使用一个迭代器,则会发生以下情况:
解决方案:在Enemy迭代器的迭代循环中初始化项目符号迭代器
Iterator<Enemy> iterEn = arrayEnemies.getIterator();
while (iterEn.hasNext){
Enemy e = iterEn.next();
//initialise the bullet iterator each time here
Iterator<Bullet> iterBul = arrayBullets.getIterator();
while (iterBul.hasNext(){
Bullet b = iterBul.next();
if (b.isOutOfBounds)iterBul.remove();
if (b.getRectangle().overlaps(e.getRectangle()){
iterBul.remove();
iterEn.remove();
}
}
}