碰撞检测Cocos 2D

时间:2011-02-08 16:46:31

标签: cocos2d-iphone collision-detection

我试图制作一个游戏,其中球随机在屏幕周围弹跳,然后如果它击中目标你就赢了游戏。因此我试图在球精灵和目标精灵之间创建碰撞检测。球实现是在游戏类的一个单独的类中完成的,目标被添加到游戏类中,如下所示:

-(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"); 
    }  
}

如果我使用注释掉的代码添加球,我可以使用此方法,但这不是我想要做的。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

您应该在计划更新内或直接在计划更新方法中调用碰撞方法。 像这样的东西 -

你的init方法中的

[self scheduleUpdate];

在scheduleUpdate方法中,您可以调用

[self targetCollision];

一旦球击中另一球,它就会确认碰撞

我希望它能解决你的问题

答案 1 :(得分:-2)

如何使用Scheduler每毫秒检查一次冲突