Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 精灵碰撞cocos2d。每帧碰撞数_Objective C_Cocos2d Iphone - Fatal编程技术网

Objective c 精灵碰撞cocos2d。每帧碰撞数

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

好的,我有两个精灵在碰撞,'player'和'rock'这是我想要的,当碰撞发生时,我想要(INT)生命增加+1,所以生命+

但是,在每一帧中都会发生碰撞!所以(int)生命等于一个大于100的数字

如何使精灵每次碰撞时(int)寿命增加+1?不是每一帧都会发生碰撞吗

这是我使用的代码

- (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,确定它们何时不相交。

谢谢,我似乎对你的说法有点了解,你能用代码展示一个例子吗?