Обнаружение столкновений в Cocos2D - PullRequest
1 голос
/ 05 февраля 2011

Я пытаюсь обнаружить столкновения в 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 или Бурундука для обнаружения столкновений.

1 Ответ

1 голос
/ 05 февраля 2011

Ваше описание проблемы указывает на то, что спрайт никогда не удалялся из памяти. Если вы создали его с помощью alloc / init, вы, вероятно, забыли его выпустить. Если вы создали его из инициализатора автоматического выпуска, вы, вероятно, сохранили его.

Кроме того, используйте метод [self boundingBox], чтобы получить ограничивающую рамку спрайта. Это быстрее и гибче.

...