Objective c 精灵碰撞cocos2d。每帧碰撞数
好的,我有两个精灵在碰撞,'player'和'rock'这是我想要的,当碰撞发生时,我想要(INT)生命增加+1,所以生命+ 但是,在每一帧中都会发生碰撞!所以(int)生命等于一个大于100的数字 如何使精灵每次碰撞时(int)寿命增加+1?不是每一帧都会发生碰撞吗 这是我使用的代码Objective c 精灵碰撞cocos2d。每帧碰撞数,objective-c,cocos2d-iphone,Objective C,Cocos2d Iphone,好的,我有两个精灵在碰撞,'player'和'rock'这是我想要的,当碰撞发生时,我想要(INT)生命增加+1,所以生命+ 但是,在每一帧中都会发生碰撞!所以(int)生命等于一个大于100的数字 如何使精灵每次碰撞时(int)寿命增加+1?不是每一帧都会发生碰撞吗 这是我使用的代码 - (void)update:(ccTime)dt { [livesLabel setString:[NSString stringWithFormat:@"%i", lives]]; CGRe
- (void)update:(ccTime)dt {
[livesLabel setString:[NSString stringWithFormat:@"%i", lives]];
CGRect playerRect = CGRectMake(
player.position.x - (player.contentSize.width),
player.position.y - (player.contentSize.height),
player.contentSize.width,
player.contentSize.height);
for (CCSprite *rock in rockArray)
{
CGRect rockRect = CGRectMake(
rock.position.x - (rock.contentSize.width),
rock.position.y - (rock.contentSize.height),
rock.contentSize.width,
rock.contentSize.height);
if (CGRectIntersectsRect(playerRect, rockRect))
{
lives++;
}
}
}
上面的代码是当“摇滚乐”和玩家发生碰撞时,生命将增加1如果你想在像你这样的情况下实现某种基本的碰撞检测,你应该做的是管理所有发生碰撞的对的列表;当两个精灵碰撞时,仅当它们不在列表中时,才将它们添加到列表中 另外,请看一看,尽管所代表的案例与您的案例并不相似
另一种方法是使用花栗鼠或Box2D进行碰撞检测。同样,您可以在上找到关于后者的教程。听起来像是希望
生命增加,但随后停止增加,直到精灵分离且不再碰撞,然后它们再次碰撞,生命再次增加
所以只需添加一个变量,这样一旦lives增加,就会打开一个BOOL
;将此BOOL添加到您的if
条件中,以便除非BOOL关闭,否则寿命不会增加。用另一个测试关闭bool,确定它们何时不相交。谢谢,我似乎对你的说法有点了解,你能用代码展示一个例子吗?