Обнаружение столкновений с итеративной выборкой - должен ли я использовать движок (box2d) или свернуть свой собственный? - PullRequest
1 голос
/ 03 апреля 2011

спасибо, что нашли время, чтобы прочитать мой вопрос.

Я пишу 2D-шутер сверху вниз.В настоящее время он использует Box2d в качестве физического движка.Дело в том, что он не использует Box2d в полной мере, просто для обнаружения столкновений и основного цикла обновления скорости / вращения.Любые планы по добавлению настоящей физики были бы просто конфеткой, а не изменит правила игры.

Теперь я выбрал Box2d, потому что прошел через 2 других физических движка, и они просто не могли справиться с типами столкновений, которые я 'м обнаружения.Я создаю несколько «пуль» с очень высокими скоростями, и я не хочу, чтобы они наносили мгновенные удары по своим целям.У JigLib и Flixel была одна и та же проблема - пули не пересекались с врагами во время обновления кадра и, следовательно, не обнаруживались как столкновения (т.е. пули проходили сквозь врагов, потому что они двигались быстро).

Iпереместился в Box2d из-за его итеративной выборки столкновений, а также из-за метода SetAsBullet для тел.И это прекрасно работает!Но теперь Box2d также доставляет мне неприятности - генерирование нескольких пуль в секунду или в то же время серьезно снижает мой fps.

Поэтому я удалил Box2d, чтобы подтвердить, что это не ограничение рендеринга ... добавленомоя собственная система скорости / вращения, и я могу стрелять сотнями пуль в секунду.Большой!Но в ней отсутствует какое-либо обнаружение столкновений.

Итак, вопросы:

1) Должен ли я написать свой собственный итерационный механизм столкновений?

2) Должен ли я попробовать Box2dопять же, возможно, с некоторыми изменениями, чтобы ускорить добавление новых тел?

3) Есть ли другая альтернатива, возможно, легкий физический движок, который специализируется на этом?

4) Знаете ли вы о каких-либодругие методы или шаблоны дизайна, которые могут быть полезны?

Большое спасибо за вашу помощь!

Редактировать: Должен заметить, есть не только пули, но и более крупные, более медленные снаряды.Я подумал, что луч должен навести отрезок на предыдущую позицию снаряда и поймать пересечения, но это не сработает для более крупных объектов: (

1 Ответ

0 голосов
/ 03 апреля 2011

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

...