在Andengine中,我如何在一定次数的碰撞后分离精灵



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

最新更新