我正在尝试检测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进行碰撞检测。
答案 0 :(得分:1)
您的问题描述表明精灵从未从内存中删除。如果你用alloc / init创建它,你可能忘了释放它。如果您是从autorelease初始化程序创建的,那么您可能会保留它。
另外,使用[self boundingBox]方法获取精灵的边界框。它更快,更灵活。