我试图制作一个游戏,其中球随机在屏幕周围弹跳,然后如果它击中目标你就赢了游戏。因此我试图在球精灵和目标精灵之间创建碰撞检测。球实现是在游戏类的一个单独的类中完成的,目标被添加到游戏类中,如下所示:
-(void) targetCollision{
CCSprite *target = [CCSprite spriteWithFile:@"target.png"];
target.position = ccp(400,50);
[self addChild:target];
CCSprite *ball = [[Ball alloc] init];
[self addChild:ball];
//CCSprite *ball = [CCSprite spriteWithFile:@"ball2.png"];
//ball.position = ccp(400,75);
//id a1 = [CCRotateBy actionWithDuration:1 angle:360];
//id repAct = [CCRepeatForever actionWithAction:a1];
//[ball runAction: repAct];
//[self addChild:ball];
CGRect ballRect = [ball boundingBox];
CGRect targetRect = [target boundingBox];
if (CGRectIntersectsRect(ballRect, targetRect)) {
NSLog(@"Target hit! Collision detected");
}
}
如果我使用注释掉的代码添加球,我可以使用此方法,但这不是我想要做的。任何帮助将不胜感激!
答案 0 :(得分:0)
您应该在计划更新内或直接在计划更新方法中调用碰撞方法。 像这样的东西 -
你的init方法中的
[self scheduleUpdate];
在scheduleUpdate方法中,您可以调用
[self targetCollision];
一旦球击中另一球,它就会确认碰撞
我希望它能解决你的问题
答案 1 :(得分:-2)
如何使用Scheduler每毫秒检查一次冲突