2012-01-26 2 views
0

Хорошо, так что я пытаюсь сделать игру, которая использует этот алгоритм: http://www.codeproject.com/Articles/15573/2D-Polygon-Collision-DetectionКак сделать этот алгоритм обнаружения столкновений для всех объектов одновременно?

Но мне нужно, чтобы рассчитать все объекты, которые могут быть встречными с объектом игрока, а не только по одному за раз. Как я могу это сделать? Или мне нужно использовать другой алгоритм? Потому что это подталкивает вас к стене, если вы находитесь между двумя стенами.

ответ

2

Обнаружение столкновений и разрешающих столкновений - это два отдельных шага. Алгоритм, который вы упомянули, обнаруживает столкновения, ничто не мешает вам использовать его для обнаружения столкновений со всеми интересующими вас объектами.

Устранение столкновений - более интересный процесс, так как вам нужно решить, что на самом деле означает каждое столкновение - то есть столкновение со стрелкой и столкновение со стеной должно приводить к различным эффектам. Разрешение нескольких столкновений (т. Е. Как вы упомянули «объект в углу/узком туннеле») может потребовать некоторого творчества - то есть вам может потребоваться нарушить то, что говорят ваши физические вычисления, и перемещать объект в некотором разумном состоянии.

Одна простая вещь, которая может работать, заключается в том, чтобы избежать множественных столкновений, делая шаги времени намного меньше. Вы все равно столкнетесь с «объектом в углу», но реже и сможете иметь простые обходные пути.

Смежные вопросы