我的測試遊戲進展緩慢,我已經到了可以通過陣列將敵人加入舞臺的地步,他們跟隨玩家並向玩家旋轉,沒有任何問題。我的下一個任務是讓每個敵方碰撞檢測,否則他們最終都完全重疊,這不是很現實。as3陣列中的敵人互相測試對方?
這裏是我到目前爲止的代碼只是關於敵人:
public function initEnemy():void
{
enemyArray = new Array();
for (var i = 0; i < 2; i++)
{
var enemy:Enemy = new Enemy((Math.random() *500 + 20), (Math.random() * 200 + 50));
stage.addChild(enemy);
enemyArray.push(enemy);
}
}
public function enemyBehavior():void
{
var enemyRotation:int;
for (var i:int = 0; i < enemyArray.length; i++)
{
var enemy = enemyArray[i];
var dx:int = enemy.x - player.x;
var dy:int = enemy.y - player.y;
var dr:int = dx * dx + dy * dy;
var dr2:int = Math.sqrt(dr);
enemy.x -= enemySpeed * dx/dr2;
enemy.y -= enemySpeed * dy/dr2;
enemyRotation = -(Math.atan2(enemy.x - player.x, enemy.y - player.y) * 180/Math.PI);
trace(enemyRotation);
enemy.rotation = enemyRotation;
if (enemy.hitTestObject(enemyArray[i+1]))
{
enemy.x -= -enemySpeed;
enemy.y -= -enemySpeed;
}
因此,這裏也正是我堅持。在enemy.hitTestObject部分,我原本只是敵人打擊測試敵人,但是這會導致敵人自己進行測試並完全搞亂了運動和旋轉。所以我嘗試了上面的方法,在陣列的下一個點上接下來在敵人實例中測試每個敵方實例,並且它與大多數敵人(但不是全部)一起工作,並且由於陣列中的最後一個實例而產生錯誤將試圖對一個不存在的實例進行測試,並且性能有巨大的下降。
有人可以給我某種方向上更好的方法來測試打從更表現友好數組這些對象呢?
[在舞臺上使用多個對象進行碰撞測試的可能的重複](http://stackoverflow.com/questions/8288209/collision-testing-with-multiple-objects-舞臺上) – CyanAngel