我创建的精灵被保存到一个名为listSprites
的列表中,每个精灵触及一行(line3
),我从屏幕上获取detached
。我想要的是当它被分离(与第3行相撞)时,分数仅增加1,但现在它增加了很多,就像它在1分钟内达到10,218,一旦精灵与它分离的线发生碰撞并且分数开始增加而不停止甚至虽然没有精灵是大肠杆菌。
/* The actual collision-checking. */
mScene.registerUpdateHandler(new IUpdateHandler() {
@Override
public void reset() { }
@Override
public void onUpdate(final float pSecondsElapsed) {
} for(Sprite s: listSprites){
if (s.collidesWith(line3)){
mScore += 1;
mScene.detachChild(s);
mText.setText(" "+mScore+"");
}
}
}
});
}
答案 0 :(得分:1)
看起来collidesWith()
并不关心孩子是否被附着。如果是这种情况,并且您不想从listSprites
中删除精灵,则需要检查列表中的每个精灵,看看它是否附加了冲突检查。
我没有多少使用过引擎,但是通过查看源代码和示例,看起来你可以做一些像改变一样简单的事情:
if (s.collidesWith(line3)){
为:
if (s.hasParent() && s.collidesWith(line3)){
如果精灵没有附加到任何东西, hasParent()
应该返回false,所以检查一下。
这假设您在此期间没有将精灵附加到不同的场景。