2011-01-19 1 views
0

Я разрабатываю игру, в которой я использовал 40 объектов CCSprite. Мне нужно обнаружить столкновение между ними. Я могу обнаружить столкновение между двумя спрайтами. Теперь, как я могу проверить 1 объект против всех остальных объектов? Будет ли использоваться цикл FOR? или есть ли другой способ сделать это?Обнаружение столкновений в Cocos2D

ответ

1

Я думаю, что для первой итерации вы должны реализовать цикл for и посмотреть, достаточно ли он достаточно.

Если это не так, я думаю, вы можете разделить свою игровую зону на прямоугольники и распределить объекты в прямоугольники (объект, который перекрывает несколько прямоугольников, принадлежит всем). Затем, когда вы делаете столкновение, вы можете проверить только в прямоугольнике, где размещается ваш первоначальный объект. Конечно, это многое зависит от того, что у вас есть. Если все объекты перемещаются вокруг, это может быть не такая уж горячая идея.

0

Почему dob't использовать Box2D или бурундуков

Для Box2D это link поможет.

Для кода Cocos2D этот код поможет.

Вам необходимо добавить следующие строки

shape-> collision_type = kCollisionTypeParticle;
cpSpaceAddCollisionHandler (space_, kCollisionTypeParticle, kCollisionTypeParticle, collisonDetect, NULL, NULL, NULL, self);

Здесь collisonDetect является метод, который мы должны зарегистрировать как:

cpBool collisonDetect (cpArbiter * отн, структура cpSpace * пространства, пустота * данные) {
          * слой = (*) данные;
          [layer collisonDetect: arb];
          возвращение cpTrue;
}

Теперь вот здесь вы будете обрабатывать остальную часть кода

- (Недействительными) collisonDetect: (cpArbiter *) отн {

          NSLog (@» КОЛЛИССИОН ОБНАРУЖЕН ");