私の衝突検出コードでは、弾丸が衝突に関与すると非アクティブ化されます。
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;
}