我正在制作这款游戏,你可以防止塔被导弹击中3次。
变量g是计数器。一旦达到3,我希望塔消失。相反,它被击中一次然后消失。我猜这是因为g = g +!可能循环多次而不是一次一次。
有什么更好的方法来解决这个问题?我将不胜感激。
public void onUpdate(float pSecondsElapsed) {
if(i.ttower.collidesWith(u.ennemy))
{
final float x = u.ennemy.getX();
final float y = u.ennemy.getY();
i.ShakeTower();
u.ennemy.detachSelf();
g=g+1;
if(g==3)
i.ttower.detachSelf();
}
}
答案 0 :(得分:0)
你是对的,g = g + 1被快速连续多次调用,因为你的联系是在更新处理程序的几次迭代中发生的。您可以对Sprite进行子类化并创建一个成员变量(带有getter和setter),该变量用作是否发生冲突的标志并将其初始化为false。然后进行以下修改:
public void onUpdate(float pSecondsElapsed) {
if(i.ttower.collidesWith(u.ennemy))
{
if(!u.ennemy.getHasCollided())
{
final float x = u.ennemy.getX();
final float y = u.ennemy.getY();
i.ShakeTower();
u.ennemy.detachSelf();
g=g+1;
if(g==3)
i.ttower.detachSelf();
u.ennemy.setHasCollided(true);
}
}
}