类之间的AS3 HitTest?

时间:2012-02-07 20:26:54

标签: actionscript-3 class hittest

我会尽力解释,但是,这很难解释。我是AS3的新手,所以如果你能帮助我,请帮助我,直到我们解决它。请粘贴代码示例,而不是仅仅说出我应该怎么做。

确定。 在主时间轴上,我这样说。

定时器在这里每隔一天就会加入敌人!

var Enemy:MovieClip = new Enemy();
addChild(Enemy);
Enemy.x = 200;
Enemy.y = 200;

另一个时间,每次都要加上弹珠.5秒!

var Bullet:MovieClip = new Bullet();
addChild(Enemy);
Bullet.x = 400;
Bullet.y = 400;

然后在Enemy.as和Bullet.as里面,我有代码说明它应该如何移动,速度等等。但是如何在这些之间进行命中测试呢?我试图在这样的敌人或子弹类中做到这一点。

所以我基本上要求我如何能够互相击中两个课程?或者是一个类的对象?

1 个答案:

答案 0 :(得分:2)

你需要对这些敌人和子弹保持参考。不做变种敌人:MovieClip = new Enemy();而是这样做。

var myEnemyList:Array = new Array();
var myBulletList:Array = new Array();


function Init():void{
    addEventListener(Event.OnEnterFrame, Update);
}

function Update(){
    //this will create a bullet and an enemy at every frame

    //Create a new enemy
    var enemy:Enemy = new Enemy();
    myEnemyList.push(enemy); //add enemy to the array

    //Create a new bullet
    var enemy:Bullet = new Bullet();
    myBulletlist.push(bullet);


    //Update the bullets
    for(var i:int=0; i < myBulletlist.length; i++){
        myBulletlist[i].Update(); //you must implement this function inside your class bullet
    }

    //Update the enemies
    for(var i:int=0; i < myEnemyList.length; i++){
        myEnemyListt[i].Update(); //you must implement this function inside your class enemy
    }

    CheckForCollision();
}


function CheckForCollision(){
    for(var i:int=0; i < myEnemyList.length; i++){
        for(var j:int =0; j < myBulletList.length; j++){
            if( myEnemyList[i].collidesWith(myBulletList[j]) ){
                //Collision
            }
        }
    }
}

顺便说一下,不要尝试编译它的伪代码。我会回答你的问题。此处还有很多教程,谷歌搜索可以帮助您获得更具体的代码。