2010-05-05 3 views
5

Я интегрировали box2d в моем двигателе (Debug Draw и т.д.) и с миром, я могу бросить в некоторых 2d квадратов/прямоугольников и т.д.Только интеграция обнаружения столкновения Box2D в моем 2d-двигателе?

Я видел this пост, где пользователь в основном не используется мир для обнаружения столкновений, однако пользователь ничего не говорит о том, как он использует многообразие (b2Manifold) и т.д. объяснить

Another post, находится в cocos2d форуме (прокрутите вниз до пользователя Lam в третьем ответе)

Может ли кто-нибудь мне помочь в этом ?, в основном хочу добавить обнаружение столкновений без необходимости использования b2World и т. Д.

Большое спасибо!

ответ

2

Есть ли причина, по которой вы не можете использовать b2World? Просто потому, что вы используете его, не означает, что вам нужно использовать физическое моделирование, если только вы не ограничены в производительности.

См. Этот пример при использовании Box2D для столкновения только в Cocos2d. Возможно, вы можете применить нечто похожее на свой проект: http://www.raywenderlich.com/606/how-to-use-box2d-for-just-collision-detection-with-cocos2d-iphone

2

Код в обоих сообщениях кажется мне полным. Вы начинаете с двух форм многоугольника и их соответствующих преобразований, а из b2CollidePolygons вы возвращаете контактный манифольд.

b2Manifold - это просто набор точек, в которых пересекаются границы двух форм. В опубликованном коде автор использует это, если счетчик точек коллектора больше нуля имеет перекрытие. В зависимости от характера фигур, когда они перекрываются, может быть разное количество точек пересечения.

Обратите внимание, что столкновение с b2World довольно устойчиво. Помимо простых запросов о столкновении, он имеет широкомасштабное отбраковывание, лучевое кастинг, пространственное дерево, события начала и конца контакта, эффективное управление памятью, чтобы назвать некоторые вещи. Для большинства этих задач есть классы в API, но я не могу сказать, что я знаком с их использованием вручную. Может стоить посмотреть.