Уничтожение спрайтов внутри и вокруг столкнувшегося спрайта

Мне нужна помощь в уничтожении спрайтов, которые находятся внутри и вокруг столкнувшихся спрайтов, т.е. в радиусе 2,5 см все спрайты должны быть уничтожены. Идея в том, что я буду стрелять снарядом снизу в объекты, падающие сверху. Как только произойдет столкновение, все спрайты вокруг этого радиуса также должны быть уничтожены. Как эффект бомбы. Я использовал box2d для прослушивания коллизий, т.е. Как это сделать?

Пожалуйста, предложите :-)

С уважением,

Картик


person Reddevil    schedule 14.12.2010    source источник


Ответы (1)


Держите массив ваших спрайтов, или, если вы используете пакетный узел, вы можете сделать это.

Когда произойдет столкновение, пройдите через свои спрайты. Проверьте расстояние с их положением и центром взрыва и убейте их, если они находятся в пределах досягаемости.

e.g.

CCSprite *sprite;
for (sprite in [batchNode descendants]) {

   if ([sprite isInRangeOf:[explosionSprite position]]) {
       [sprite yourRemovalMethod];
   }

}

метод isInRangeOf: будет в вашем подклассе спрайта

Что-то типа..

-(BOOL) isInRangeOf:(CGPoint)explosionCenter {

 //Use pythagoras theorem to work out the distance between [sprite position] and [explosionCenter]

    CGFloat dx = explosionCenter.x - [self position].x;
    CGFloat dy = explosionCenter.y - [self position].y;
    float distance = sqrt(dx*dx + dy*dy );

 // If your distance is less than or equal to your 'death radius' return YES, else No.
    if (distance <= 25) {
    return TRUE;
    } else { 
    return FALSE;
    }


}

Надеюсь, это поможет.

person Bongeh    schedule 14.12.2010