Я делаю шутер с LibGDX. Мой код работает, когда одна пуля попадает в одного врага. Когда несколько врагов сложены и поле столкновения пули попадает несколько ящиков противника столкновения, игра вылетает с Exception в потоке «LWJGL Application» java.lang.ArrayIndexOutOfBoundsException: -1LibGDX Создание единственной пули убивает только одного врага, когда враги перекрываются
Поправьте меня, если я ошибаюсь , но я думаю, что это происходит из-за того, что итератор пытается удалить так же много объектов из массива пули, поскольку в этом конфликте были убиты враги, и хотя есть только одна пуля, например, убивающая трех врагов, индекс пулевого массива опускается ниже нуля, что вызывает исключение.
Мой вопрос: Как изменить петлю/код так, чтобы один враг умирал с одной пулей, даже если есть много врагов, «уложенных», и пуля поражает сразу нескольких врагов. Спасибо.
bIter = bullets.iterator();
while(bIter.hasNext()){
b = bIter.next();
mIter = monsters.iterator();
while(mIter.hasNext()){
m = mIter.next();
if(m.getBounds().overlaps(b.getBounds())){
mIter.remove();
bIter.remove();
}
}
}
Хорошо, но Да. Еще раз спасибо. Я временно исправил это с добавлением небольшого таймера в цикл, но это более тонкое и эффективное решение. –