2012-08-17 44 views
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); 
    } 
} 

感謝您的幫助功能, 需要幫助請叫我。

+0

什麼是'playerDown','healthBar'是什麼意思? – 2012-08-17 01:54:31

+0

playerDown只是一個在這種情況下並不真正使用的布爾值。 HealthBar是被移除的敵人healthBar。 – oliboon 2012-08-17 05:33:50

+0

我有些困惑。請檢查以下真正的問題。你希望有盾牌的玩家去除敵人。但現在問題不是所有的敵人都被碰撞了嗎? – 2012-08-17 05:46:20

回答

0

此問題已得到解決。問題出在我的碰撞檢查和爆炸完成功能。由於敵人只有在爆炸動畫後才被移除,它仍然會進入碰撞循環。我通過在removeEnemy函數中立即移除敵人來糾正這個問題。