Определение нерегулярной области CCSprite - PullRequest
0 голосов
/ 27 июля 2011

В моей простой игре я использую boundingBox для сбора монет и прочего, но мне нужно использовать обнаружение нерегулярных областей Sprite (без альфы).Есть ли альтернатива boundingBox?

Вот код:

-(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event {
CGPoint location = [touch locationInView:[touch view]];
CGPoint point = [[CCDirector sharedDirector] convertToGL:location];
curentPosition = point;
arrToDel = [[NSMutableArray alloc] initWithCapacity:0];
// Находим спрайт под касанием

if (CGRectContainsPoint([some boundingBox], curentPosition)) {
    CCLOG(@"popal"); 
}

CCSprite *coin = nil;

for (Coins *coins in self.bugs) {
    if (CGRectContainsPoint([coins boundingBox], curentPosition)) {
        coin = coins; // нашли монету
    }
}

if (coin != nil) {
    NSMutableArray *checkList = [NSMutableArray arrayWithCapacity:0];

    for (Coins *coins in self.bugs) {
        if (CGRectIntersectsRect([coin boundingBoxInPixels], [coins boundingBox]) && coins != coin) {
            [checkList addObject:coins];
        }
    }

    int max = coin.zOrder;

    for (Coins *b in checkList) {
        if (b.zOrder > max)
            max = b.zOrder;
    }

    if (max == coin.zOrder) {

        [self removeChild:coin cleanup:YES];
        podsciot++;
        CCLOG(@"%i",podsciot);

        [arrToDel addObject:coin];

        for (Coins *coins in  arrToDel) {
            if (coins.type == kKey) {
                coinsCount++;
                CCLOG(@"SeriiZ --> %i", coinsCount);
            }

            [self.bugs removeObject:coin];

        }
    }
}

Ответы [ 2 ]

0 голосов
/ 28 июля 2011

Я решил эту проблему с CGPath.

Этот урок помог мне http://bobueland.com/cocos2d/?p=134

0 голосов
/ 27 июля 2011

Я бы лично порекомендовал Box2D и PhysicsEditor, если вам нужны неправильные формы.У него небольшая кривая обучения (Box2D), но оно того стоит для большинства применений.

Box2D (хотя он поставляется с Cocos2D и имеет встроенный шаблон)

PhysicsEditor (не бесплатный, но я рекомендую его, поскольку программа очень проста в использовании и разработчик - добрый человек)

Это не только для симуляции физики.Вы можете использовать его только для обнаружения столкновений, если хотите.На сайте Рэя Вендерлиха есть хорошее руководство:

Box2D для обнаружения просто столкновения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...