0

我遇到的问题是,当我的玩家用他的盾牌与敌人碰撞时,它应该只摧毁敌人。相反,它会删除我阵列中的所有敌人。调用来移除敌人的函数在其他地方使用并且可以正常工作。

这是碰撞检查功能:

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);
    }
}

感谢您的帮助,如果您还需要什么,请告诉我。

4

1 回答 1

0

此问题已得到纠正。问题在于我的碰撞检查和爆炸完成功能。由于敌人是在爆炸动画之后才被移除的,所以它仍然会进入碰撞循环。我通过在 removeEnemy 函数中立即移除敌人来纠正这个问题。

于 2012-08-20T20:45:18.143 回答