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

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

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

С уважением,

Картик


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


Ответы (1)


arrow_upward
1
arrow_downward

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

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

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