Мне нужна помощь в уничтожении спрайтов, которые находятся внутри и вокруг столкнувшихся спрайтов, т.е. в радиусе 2,5 см все спрайты должны быть уничтожены. Идея в том, что я буду стрелять снарядом снизу в объекты, падающие сверху. Как только произойдет столкновение, все спрайты вокруг этого радиуса также должны быть уничтожены. Как эффект бомбы. Я использовал box2d для прослушивания коллизий, т.е. Как это сделать?
Пожалуйста, предложите :-)
С уважением,
Картик
Ответ 1 · рейтинг 1 · Bongeh
Держите массив ваших спрайтов, или, если вы используете пакетный узел, вы можете сделать это.
Когда произойдет столкновение, пройдите через свои спрайты. Проверьте расстояние с их положением и центром взрыва и убейте их, если они находятся в пределах досягаемости.
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;
}
}
Надеюсь, это поможет.