如何在Andengine中发生一定数量的碰撞后分离精灵?

时间:2014-05-26 23:50:40

标签: java android 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();

    }
       }

1 个答案:

答案 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);
         }

    }
}