0
我目前正在使用AS3創建一個Flash遊戲,並且目前已經達到了用戶能夠使用鍵盤在舞臺上移動的角色。我現在有兩個敵人在編譯遊戲時加入了獨特的名字。當敵人靠近時讓敵人轉向
我現在卡住的是檢測到哪個敵人最接近玩家,並且只讓敵人旋轉並向玩家移動。
public function updateEnemies(player:MovieClip):void{
//run a for loop on our array and update every enemy object in there
for(var i = 0; i < enemyObjectsArray.length; i++){
var enemy:Object = enemyObjectsArray[i];
//calculate distance between enemyObject's movieClip and target
enemy.distanceX = player.x - enemy.myMc.x;
enemy.distanceY = player.y - enemy.myMc.y;
enemy.distanceTotal = new Point(enemy.myMc.x - player.x, enemy.myMc.y - player.y);
trace(enemy.distanceTotal);
//sort the array based on the enemy object's "distanceTotal" parameter
enemyObjectsArray.sortOn("distanceTotal", Array.NUMERIC);
enemyObjectsArray[0].myMc.rotation = 10;
}
}
嗨moosefetcher。感謝您的幫助和代碼。我實現了你的建議代碼並追蹤出_distance。然而,因爲我在舞臺上有兩個敵人,所以這兩個敵人的距離都是X和Y座標。我用我用來檢測最近的敵人的方法更新了我的問題。 – Human
有2個原因不起作用。您需要從更新它們的循環的外部對您的enemyObejctsArray進行排序。另一個是你沒有對那個可以在那個循環之外訪問的每個敵人的'距離'屬性。您需要爲每個敵方對象添加距離屬性。 – moosefetcher