Cocos2D中的碰撞检测

时间:2011-02-05 16:20:47

标签: iphone cocos2d-iphone collision-detection sprite

我正在尝试检测cocos2D中的碰撞。我正在使用此代码:

- (void)checkForCollisionSpeedUp:(ccTime)dt

{

    CGRect projectileRect = CGRectMake(
                                       guy.position.x, 
                                       guy.position.y, 
                                       2, 
                                       20);


        CGRect targetRect = CGRectMake(
                                       speedUp.position.x - (speedUp.contentSize.width/2), 
                                       speedUp.position.y - (speedUp.contentSize.height/2), 
                                       speedUp.contentSize.width, 
                                       speedUp.contentSize.height);
        if (CGRectIntersectsRect(projectileRect, targetRect)) {
            [[SimpleAudioEngine sharedEngine] playEffect:@"Robot_blip-Marianne_Gagnon-120342607.wav"];
            [bg removeChild:speedUp cleanup:YES];

    }
}

该代码检测到碰撞,它播放声音,并删除精灵,但不删除CGRect。删除后,CGRect仍保留在精灵的位置。我该如何解决这个问题?

谢谢,

泰特

另外,我真的不想使用Box2D或Chipmunk进行碰撞检测。

1 个答案:

答案 0 :(得分:1)

您的问题描述表明精灵从未从内存中删除。如果你用alloc / init创建它,你可能忘了释放它。如果您是从autorelease初始化程序创建的,那么您可能会保留它。

另外,使用[self boundingBox]方法获取精灵的边界框。它更快,更灵活。