我遇到了这个问题。
我正在用cocos2d创建一个带有Box2D物理的游戏。为了摧毁我的对手,我有一个标签应用于他们(在这种情况下,tag = MONSTER1)。
我创建了BOOL _invincible
和int _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]];
}
}
问题是我只会摧毁第一个怪物,并且没有任何事情发生在
之后答案 0 :(得分:0)
我认为发生在你身上的是因为你正在设置_invincible = NO; 就在那里,当你的对象发生碰撞时,你并没有停止游戏多次运行该代码。我建议您删除该行并安排一个方法,在删除对象后将其设置为NO,从而不再发生碰撞。