我正在做这个游戏,你要保持一个塔被来袭导弹击中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();
}
}
您是正确的,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);
}
}
}