В моем коде обнаружения столкновения пули деактивируются после того, как они попали в столкновение:
for(int j = 0; j < enemies.size(); j++){
//check for collision
if(bullets[i].isActive() && bullets[i].getSprite().collidesWith(enemies.get(j).getSprite())){
//remove bullet
removeBullet(i); //bullet is deactivated here, .isActive() will return false
if(enemies.get(j).damage(1)){
// --snip--
}
break;
}
}
Единственное место, где пули деактивированы, находится в этом разделе кода.Единственное место, где они активируются, это когда они созданы.
Несмотря на это, пуля будет наносить урон несколько раз.removeBullet()
запускает анимацию взрыва, которая воспроизводится несколько раз.Что может быть не так?
Обновление
Вот removeBullet()
private void removeBullet(int i){
if(bullets[i] == null) return;
bullets[i].deactivate();
makeSmallExplosion(bullets[i].getSprite().getX(),bullets[i].getSprite().getY());
bulletPool.recyclePoolItem(bullets[i]);
bullets[i] = null;
}