私が抱えている問題は、プレイヤーがシールドで敵と衝突したときに、敵だけを破壊する必要があることです。代わりに、アレイ内のすべての敵を削除します。敵を除去するために呼び出される関数は別の場所で使用され、正しく機能します。
これは衝突チェック関数です:
function collisionCheck(){
enemyLoop :for(var i:int = level.enemies.length-1; i>=0; i--){
if(!shield){
removeEnemy(i, true);
removePlayer();
return;
}
else{
removeEnemy(i, false); //This is what is called when I get this issue
return;
}
}
敵の除去機能:
public function removeEnemy(enemyNum:int, playerDown:Boolean){
if(!playerDown){
killsMade++;
if(level.levelObjects.contains(level.enemies[enemyNum].healthBar)){
level.levelObjects.removeChild(level.enemies[enemyNum].healthBar);
}
level.enemies[enemyNum].enemyHit(true);
level.enemies[enemyNum].gotoAndPlay("Explosion");
explodedEnemyNum = enemyNum;
playExplosionSound();
explosionDone();
}
敵スプライトを消す機能です
public function explosionDone(e:TimerEvent){
stopExplosionSound();
if(level.enemies[explodedEnemyNum] != null){
level.levelObjects.removeChild(level.enemies[explodedEnemyNum]);
level.enemies.splice(explodedEnemyNum, 1);
}
}
ご協力ありがとうございます。他に何か必要なことがありましたらお知らせください。