0

我正在制作一个游戏,您的玩家(枪)射击敌人(坏人)以获得分数。我已经设置好了,所以你有三个生命(生命),直到游戏结束。我正在尝试添加一个 addLife 函数,当你的玩家收集一个对象(waterMelon)时,它就会获得生命。我添加了一个运行 addLife 函数的计时器事件,它每 5 秒向舞台添加一个电影剪辑的实例。在该函数中,我创建了另一个名为 checkCollisions 的函数,用于检查玩家与对象的碰撞,将对象从舞台上移除,然后添加生命。

var timer2:Timer = new Timer(5000);

timer2.addEventListener(TimerEvent.TIMER, addLife);
timer2.start();
var watermelon:waterMelon = new waterMelon();

function addLife(evt:TimerEvent):void{
    watermelon.x = Math.random() * stage.stageWidth;
    watermelon.y = Math.random() * stage.stageHeight;

    addChild(watermelon);
    watermelon.push(waterMelon);

    checkCollision();
}

function checkCollision(){
    if (gun.hitTestObject(watermelon)){
    removeChild(watermelon);
    lives++;
    livesDisplay.gotoAndStop(livesDisplay.currentFrame-1);
    }
}

代码中唯一有效的部分是将西瓜添加到舞台上,但是当我的玩家与它发生碰撞时,它不会从舞台上移除。有人可以告诉我如何让我的西瓜在玩家与它发生碰撞时从舞台上完全移除,并为我的玩家增加生命。再一次,每个对象都等于这个;gun = 玩家,waterMelon = 物体/西瓜,lives = 生命,livesDisplay = 生命的物理展示。

4

1 回答 1

0

您试图从舞台上删除数组(西瓜)而不是对象(水瓜)。尽管从外观上看,您使用的是数组,因此您必须从数组西瓜中找到与枪相撞的对象的索引。您可以使用 for 循环来执行此操作。

for (melonCount:int = 0; melonCount>watermelon.length;melonCount--)
{
 if (gun.hitTestObject(watermelon[melonCount]))
 {
  removeChild(watermelon[melonCount])
  watermelon.splice(melonCount, 1)
  melonCount--
 }
}
于 2013-09-21T12:56:07.597 回答