首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AS3中检测到冲突时删除对象

在AS3中检测到冲突时删除对象
EN

Stack Overflow用户
提问于 2013-09-21 12:05:04
回答 1查看 1.1K关注 0票数 0

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

代码语言:javascript
复制
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 =生命的物理显示。

EN

回答 1

Stack Overflow用户

发布于 2013-09-21 12:56:07

您已经尝试从舞台上删除数组(西瓜),而不是对象(WaterMelon)。尽管从外观上看,您使用的是数组,所以您必须找到对象的索引,该对象与来自数组西瓜的枪发生碰撞。您可以使用for循环来完成此操作。

代码语言:javascript
复制
for (melonCount:int = 0; melonCount>watermelon.length;melonCount--)
{
 if (gun.hitTestObject(watermelon[melonCount]))
 {
  removeChild(watermelon[melonCount])
  watermelon.splice(melonCount, 1)
  melonCount--
 }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18932370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档