Проектирование объектов вне столкновения - PullRequest
2 голосов
/ 22 октября 2010

В качестве хобби я занимаюсь разработкой 2D-игры. У меня есть базовое обнаружение столкновений, реализованное с использованием метода разделительной оси. Когда два объекта сталкиваются, я проецирую один из них вне столкновения вдоль оси, которая имеет наименьшее количество перекрытий.

Проблема, с которой я сталкиваюсь, заключается в том, что, когда объект движется довольно быстро, ось с наименьшим перекрытием не всегда является правильным направлением. Лучший пример, который у меня есть, это когда объект движется вниз (вдоль оси + y) из-за имитации гравитационного притяжения и сталкивается с объектом окружающей среды, близким к «краю» (как на краю обрыва). Если объект падал достаточно быстро, ось с наименьшим количеством перекрытий оказывается осью x, и объект перемещается вбок вдоль оси x.

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

Есть ли способ сделать это без дополнительных накладных расходов?

1 Ответ

1 голос
/ 22 октября 2010

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

текст ссылки

...