Обнаружение столкновений в Cocos2D - PullRequest
0 голосов
/ 19 января 2011

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

Ответы [ 2 ]

1 голос
/ 20 января 2011

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

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

0 голосов
/ 11 декабря 2012

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

Для Box2D эта ссылка поможет.

Для Cocos2D поможет следующий код.

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

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

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

cpBool collisonDetect (cpArbiter * arb, struct cpSpace * space, void * data) {
* layer = (*) data;
[layer collisonDetect: arb];
return cpTrue;
}

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

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

NSLog (@ "COLLISION DETECTED");

}

...