我正在开发一个简单的游戏,其中玩家正在拍摄流星体。我有两个图像的碰撞检测问题。我有两个激光和流星体的列表,每个物体都有X和Y位置。我想要做的是将当前图像(激光和流星体)的位置实现为两个矩形,以便我可以检查它们是否相互作用,如果它们相互作用,则从两个列表中删除这些元素。 我的逻辑可能有问题,所以如果有更常用或适当的方法,请告诉我。碰撞检测中的java.util.NoSuchElementException错误
这里是碰撞检测方法
public void checkCollision(){
ListIterator<Shoot> shootItr = shots.listIterator();
ListIterator<Meteor> metItr = meteors.listIterator();
Rectangle2D rectMet;
Rectangle2D rectSh;
while(shootItr.hasNext()){
rectSh = new Rectangle2D.Float(shootItr.next().getBeamPositionX(), shootItr.next().getBeamPositionY(), 10, 10);
while(metItr.hasNext()){
rectMet = new Rectangle2D.Float(metItr.next().getMetPositionX(), metItr.next().getMetPositionY(), 20, 20);
if(rectSh.intersects(rectMet)){
metItr.remove();
shootItr.remove();
}
}
}
}
这里是例外:
java.util.NoSuchElementException
at java.util.ArrayList$Itr.next(Unknown Source)
您在一次执行中调用'.next()'两次?存储每个执行的值。 – Emz 2014-12-06 08:59:38