Уничтожение спрайтов внутри и вокруг столкнувшегося спрайта - PullRequest
0 голосов
/ 14 декабря 2010

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

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

С уважением,

Картик

1 Ответ

1 голос
/ 14 декабря 2010

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

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

например,

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;
    }


}

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

...