Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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 CGRectIntersectsRect()用于检测第一个中间选项_Objective C_Cocos2d Iphone - Fatal编程技术网

Objective c CGRectIntersectsRect()用于检测第一个中间选项

Objective c CGRectIntersectsRect()用于检测第一个中间选项,objective-c,cocos2d-iphone,Objective C,Cocos2d Iphone,我使用CGRectIntersectsRect()查看一个CCSprite何时与另一个CCSprite发生碰撞: - (void)update3 { for (CCSprite *sprite in _monsters) { if (CGRectIntersectsRect(_rocket.boundingBox, sprite.boundingBox)) { NSLog(@"Collide"); }

我使用
CGRectIntersectsRect()
查看一个
CCSprite
何时与另一个
CCSprite发生碰撞:

- (void)update3
{
    for (CCSprite *sprite in _monsters)
    {
        if (CGRectIntersectsRect(_rocket.boundingBox, sprite.boundingBox))
        {
            NSLog(@"Collide");
        }
    } 
}

只要精灵彼此接触,就会触发日志,我只想检测第一次接触。这可能吗?

当两个物体第一次接触时,将首先调用此碰撞代码。此时,为了防止进一步的计算,您可以在怪物上设置一个属性,如
isInCollision
,当它为
true
时,不检查相交边界矩形


当您希望您的怪物再次收到子弹时,请将
isInCollision
设置为
false

您所说的“仅检测第一次触碰”是什么意思这仅仅是关于添加
break到内部if语句?在你正在做的教程中,你应该在这一点上摧毁怪物。比较将不再执行。@Mundi不,我现在不学习任何教程,我自己做way@MartinR我的意思是当精灵们第一次接触对方时。这样,即使他们还在触摸,在第一次触摸之后,它也不会再识别它。我不习惯使用属性,请给我一个example@WilhelmMichaelsen类的实例变量。你的怪物和火箭应该有一个包含或继承自CCSprite的类。正如Mundi所建议的那样,在该类中添加一个名为
isInCollision
的属性(变量)。然后你总是知道火箭(或者怪物,或者两者都有;不管你想怎么设置)何时发生碰撞,你知道不要再检查了。@WendiKidd但是这个变量如何检测它们是否发生碰撞呢?@WilhelmMichaelsen在你上面的代码中,你有
NSLog(@“Collide”)
,添加这个:
if(rocket.isInCollision){return;}rocket.isInCollision=true。你可以知道他们什么时候相撞。如果检测到碰撞且火箭已经处于碰撞中,则强制返回。如果是第一次冲突,则将变量设置为true,以便在第二次检测到它时,您知道返回。对不起,我是个noob,但我甚至不知道如何创建此类属性