适用于敌人的生活

时间:2012-01-15 16:17:14

标签: iphone cocos2d-iphone box2d

我遇到了这个问题。

我正在用cocos2d创建一个带有Box2D物理的游戏。为了摧毁我的对手,我有一个标签应用于他们(在这种情况下,tag = MONSTER1)。

我创建了BOOL _invincibleint _livesenemy;

我通过放入init方法给了他们许多生命

_livesenemy1 = 2;

摧毁我添加的怪物

if (!_invincible) {

    if ((spriteA.tag == MONSTER1 && spriteB.tag == LASER2) ||
        (spriteB.tag == MONSTER1 && spriteA.tag == LASER2)) {


        _livesenemy1--;

        [[SimpleAudioEngine sharedEngine] playEffect:@"whine.wav"];

        if (_livesenemy1 == 0) {

            if (spriteA.tag == MONSTER1) [self markToDelete:[NSValue valueWithPointer:bodyA]];
            else [self markToDelete:[NSValue valueWithPointer:bodyB]];

        }

        _invincible = YES;

        {
            _invincible = NO;

        }

        if (spriteA.tag == LASER2) [self markToDelete:[NSValue valueWithPointer:bodyA]];
        else [self markToDelete:[NSValue valueWithPointer:bodyB]];
    }

}

问题是我只会摧毁第一个怪物,并且没有任何事情发生在

之后

1 个答案:

答案 0 :(得分:0)

我认为发生在你身上的是因为你正在设置_invincible = NO;  就在那里,当你的对象发生碰撞时,你并没有停止游戏多次运行该代码。我建议您删除该行并安排一个方法,在删除对象后将其设置为NO,从而不再发生碰撞。