撞墙时移除子弹

时间:2014-07-21 01:06:26

标签: actionscript-3 flash platform

我正在制作AS3平台游戏,玩家可以射击一些子弹。

当子弹触及敌人时,敌人死亡,子弹被移除。

我已经成功了但是现在我想要移除子弹,如果它撞墙,我无法弄清楚如何这样做。

到目前为止,这是我触摸敌人时移除子弹的代码:

public function checkCollisions() {

            // enemies
            for(var i:int=enemies.length-1;i>=0;i--) {
                if (hero.mc.hitTestObject(enemies[i].mc)) {

                    // is the hero jumping down onto the enemy?
                    if (hero.inAir && (hero.dy > 0)) {
                        enemyDie(i);
                    } else {
                        heroDie();
                    }
                }

            for (var j:int = 0; j < bulletList.length; j++) // for each bullet in the bulletList
                {
                    if (enemies[i].mc.hitTestObject(bulletList[j]) )
                    {
                        trace("Bullet and Enemy are colliding");
                        enemyDie(i)
                        bulletList[j].removeSelf();
                    }

                }
            }

我已经定义了我的墙和地板:

public function examineLevel() {
            fixedObjects = new Array();
            otherObjects = new Array();
            for(var i:int=0;i<this.gamelevel.numChildren;i++) {
                var mc = this.gamelevel.getChildAt(i);

                // add floors and walls to fixedObjects
                if ((mc is Floor) || (mc is Wall)) {
                    var floorObject:Object = new Object();
                    floorObject.mc = mc;
                    floorObject.leftside = mc.x;
                    floorObject.rightside = mc.x+mc.width;
                    floorObject.topside = mc.y;
                    floorObject.bottomside = mc.y+mc.height;
                    fixedObjects.push(floorObject);
}
}

我试过把它放在我的checkCollisions函数中,但它不起作用:

for(var k:int=0;k<fixedObjects.length;k++)
                    {
                        if (fixedObjects[k].hitTestObject(bulletList[j]) ){
                            trace("hit wall");
                        }

你知道我必须放置什么才能在接触墙壁(或地板)时移除子弹?

THX

1 个答案:

答案 0 :(得分:0)

数组fixedObjects保存对Object个实例的引用。但是,hitTestObject(obj)DisplayObject类的公共函数,obj参数必须是DisplayObject的实例。

如果您提供的代码段与您在游戏中使用的代码段完全相同,则应生成运行时错误消息。

请问您是否可以确认这是否是未能检测到碰撞的原因?