AS3 碰撞检测阵列

AS3 Collision Detection Arrays

我一直在尝试找出一种更简单的方法来为我一直在开发的简单 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 将 return 为 false。我可以使用什么解决方案来使这更容易和更清洁。

在此先感谢大家。

将您的 MovieClip 块插入数组

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

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

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;
    }