AS3碰撞检测阵列

时间:2015-04-21 11:24:11

标签: actionscript-3 collision-detection collision

我一直试图找出一种更简单的方法来为我一直在研究的简单RPG编写代码,如果无法通过的项目是单独添加的话,它可以很好地工作。当我尝试使用数组时,它会抛出一堆邪恶的错误。当然我是AS3的新手,但我试图找到解决方案,没有运气。

if(heroMC.hitTestObject(block1)) {
    hitObj = true;
    heroMC.x = gX;
    heroMC.y = gY;
} else if(heroMC.hitTestObject(bridgeBlock2)) {
    hitObj = true;
    heroMC.x = gX;
    heroMC.y = gY;
} if(heroMC.hitTestObject(bridgeBlock3)) {
    hitObj = true;
    heroMC.x = gX;
    heroMC.y = gY;
} else {
    hitObj = false;
    gX = heroMC.x;
    gY = heroMC.y;
}

然后我将每个条目添加到我的列表中。如果heroMC与对象相交,则它将hitObj的值更改为true。如果没有任何冲突,hitObj将返回false。我可以使用哪些解决方案来使这更容易和更清洁。

先谢谢你们。

1 个答案:

答案 0 :(得分:1)

将块MovieClip插入数组

var blocksArray: Arry = new Array(block1, bridgeBlock2, bridgeBlock3);

添加输入帧处理程序事件以捕获更改

this.addEventListener(Event.ENTER_FRAME, onEnterFramehandler);

 function onEnterFramehandler(e: Event): void {
        //initially set it to false
        hitObj = false;
        for (var i: uint = 0; i < blocksArray.length; i++) {
            //If  hit the object set it to true;
            if (heroMC.hitTestobject(blocksArray[i])) {
                hitObj = true;
                //set the position of the heroMc if true 
                heroMC.x = gX;
                heroMC.y = gY;
                break;
            }
        }
        //get the position of the heroMc if false           
        gX = heroMC.x;
        gY = heroMC.y;
    }