Я разрабатываю игру, в которой я использовал 40 объектов CCSprite. Мне нужно обнаружить столкновение между ними. Я могу обнаружить столкновение между двумя спрайтами. Теперь, как я могу проверить 1 объект против всех остальных объектов? Будет ли использоваться цикл FOR? или есть ли другой способ сделать это?Обнаружение столкновений в Cocos2D
ответ
Я думаю, что для первой итерации вы должны реализовать цикл for и посмотреть, достаточно ли он достаточно.
Если это не так, я думаю, вы можете разделить свою игровую зону на прямоугольники и распределить объекты в прямоугольники (объект, который перекрывает несколько прямоугольников, принадлежит всем). Затем, когда вы делаете столкновение, вы можете проверить только в прямоугольнике, где размещается ваш первоначальный объект. Конечно, это многое зависит от того, что у вас есть. Если все объекты перемещаются вокруг, это может быть не такая уж горячая идея.
Почему 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 (@» КОЛЛИССИОН ОБНАРУЖЕН ");