0

使用下面的方法,当检查它们是否相交时,如何参考特定的精灵?

- (void)update:(ccTime)dt {
    for (CCSprite *sprite in movableSprites) {
        if (CGRectIntersectsRect(sprite.boundingBox, sprite.boundingBox)) {
            break;
        }
    }
}

似乎所有精灵都可以在 moveableSprites 对象中使用,但我不知道如何检查特定精灵是否正在碰撞......我不知道如何引用它们。如果有更简单的方法来执行碰撞检测,我很感兴趣。

4

1 回答 1

3

看来您上面的代码将始终返回 TRUE,因为您正在检查 sprite 的边界框是否与sprite碰撞,并且由于它们是相同的,所以它总是会。

if (CGRectIntersectsRect(sprite.boundingBox, sprite.boundingBox)) {//
        break;
    }

应该与不同的精灵而不是相同的精灵进行比较。

if (CGRectIntersectsRect(sprite.boundingBox, otherSprite.boundingBox)) {//
        break;
    }

如果这不能回答您的问题,也许您希望避免通过数组进行枚举?如果是这种情况,请尝试使用tags。有点像下面。

    CCSprite *aSprite = [CCSprite spriteWithFile:@"hurdle1.png"];

    [self addChild:aSprite tag:2];

现在 [self getChildByTag:2] 可以代替 sprite,您只需添加 boundingBox 来检查碰撞,如下所示。

    if (CGRectIntersectsRect([self getChildByTag:2].boundingBox, checkSprite.boundingBox)) {//
        break;
    }
于 2013-03-18T05:56:00.843 回答