我在做一个游戏,你的玩家(枪)射击敌人(坏蛋)来得分。我已经安排好了,所以你有三条生命,直到游戏结束。我正在尝试添加一个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);
}
}代码中唯一有效的部分是将西瓜添加到舞台上,但是当我的玩家与它发生冲突时,它不会从舞台上移除。请有人告诉我,当玩家与我的西瓜相撞时,我如何把西瓜从舞台上完全移走,并给我的玩家添上一层生命。再一次,每个对象都等于这个;= player,waterMelon = object /西瓜, lives = lives,livesDisplay =生命的物理显示。
发布于 2013-09-21 12:56:07
您已经尝试从舞台上删除数组(西瓜),而不是对象(WaterMelon)。尽管从外观上看,您使用的是数组,所以您必须找到对象的索引,该对象与来自数组西瓜的枪发生碰撞。您可以使用for循环来完成此操作。
for (melonCount:int = 0; melonCount>watermelon.length;melonCount--)
{
if (gun.hitTestObject(watermelon[melonCount]))
{
removeChild(watermelon[melonCount])
watermelon.splice(melonCount, 1)
melonCount--
}
}https://stackoverflow.com/questions/18932370
复制相似问题