【发布时间】:2011-06-23 13:48:16
【问题描述】:
我正在尝试制作一个游戏,让球在屏幕上随机反弹,然后如果它击中目标,你就赢得了比赛。因此,我试图在球精灵和目标精灵之间创建碰撞检测。球的实现是在游戏类之外的一个单独的类中完成的,目标被添加到游戏类中,如下所示:
-(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");
}
}
如果我用注释掉的代码添加球,我可以让这个方法工作,但这不是我想要做的。任何帮助将不胜感激!
【问题讨论】:
-
我可以看到球和目标被添加并且球继续旋转..所以你的问题是球的运动??
-
好吧,球的运动是在不同的类中定义的,然后通过 CCSprite *ball = [[Ball alloc] init]; 行添加到场景中。 [自我添加孩子:球];本质上是一个在屏幕周围随机弹跳的球和一个静止的目标。当球悬停在目标上或与它发生碰撞时,我希望控制台说检测到碰撞
标签: cocos2d-iphone collision-detection