Обнаружение столкновения Cocos 2D - PullRequest
0 голосов
/ 08 февраля 2011

Я пытаюсь создать игру, в которой мяч случайно отскакивает от экрана, а затем, если он попадает в цель, вы выигрываете игру. Поэтому я пытаюсь создать обнаружение столкновения между спрайтом шара и целевым спрайтом. Реализация шаров выполняется в отдельном классе от класса игрового процесса, и цель добавляется в класс игрового процесса следующим образом:

-(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 голосов
/ 08 мая 2013

Вам следует вызывать метод столкновения внутри обновления расписания или непосредственно в методе обновления расписания. Как то так -

в вашем методе инициализации

[self scheduleUpdate];

в методе scheduleUpdate вы можете вызвать

[self targetCollision];

это подтвердит столкновение, как только мяч попадет в другой шар

Я надеюсь, что это решит вашу проблему

0 голосов
/ 15 апреля 2011

как насчет использования CCScheduler, проверяющего столкновение каждую минуту

...