如何向最前方的敌人开枪?

时间:2014-06-28 23:08:52

标签: actionscript-3 flash

好的,所以这一直困扰着我,所以我想我会把它发布在这里。这是一个特定的主题,基本上不可能找到任何关于如何做到这一点的参考。

for (var i:int=0; i<=Main.bloonList.length-1; i++)
{
    //loop through the children in enemyHolder
    var cEnemy = Main.bloonList[i];//define a movieclip that will hold the current child
    //this simple formula with get us the distance of the current enemy
    if (Math.sqrt(Math.pow(cEnemy.y - this.y,2) + Math.pow(cEnemy.x - this.x,2)) < 100)
    {
        shoot(cEnemy);
        timer = 0;
    }
}

这是我目前的代码,我想知道如何找出哪个敌人是沿着轨道最远的。我可以通过使用它找到它。

function onEnter(e:Event)
{
    distanceTravelled=distanceTravelled+xSpeed+Yspeed
}

但是,我如何告诉for循环定位具有最高值的那个?

2 个答案:

答案 0 :(得分:2)

只需在当前for循环中更新新变量(例如highestDistEnemy),即可找到最高距离值。您使用第一个敌人MovieClip对象初始化变量,并且只有当敌人的距离大于之前highestDistEnemy的距离时才将其更新为新的敌人对象。在代码中:

if(distance(curEnemyDistance) > distance(highestDistEnemy)) {
   highestDistEnemy = curEnemy;
}

其中,距离只计算距离,因为您已在计算距离并在循环开始时将highestDistEnemy初始化为Main.bloonList[0]

答案 1 :(得分:1)

在循环所有敌人后跟踪最远的敌人。最后拍摄。

<强>伪代码

var maxDistance = 0; 
var furthesEnemy = null;
var currentDistance = null;

for (var i:int=0; i<=Main.bloonList.length-1; i++) {

    //loop through the children in enemyHolder
    var cEnemy = Main.bloonList[i];

    //this simple formula with get us the distance of the current enemy
    currentDistance = Math.sqrt(Math.pow(cEnemy.y - this.y,2) + Math.pow(cEnemy.x - this.x,2));

    if (currentDistance > maxDistance) {
        maxdistance = currentDistance;
        furthesEnemy = cEnemy;
    }
}

shoot(furthesEnemy);