我正在制作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
答案 0 :(得分:0)
数组fixedObjects
保存对Object
个实例的引用。但是,hitTestObject(obj)
是DisplayObject
类的公共函数,obj
参数必须是DisplayObject
的实例。
如果您提供的代码段与您在游戏中使用的代码段完全相同,则应生成运行时错误消息。
请问您是否可以确认这是否是未能检测到碰撞的原因?