Я строю игру, и сейчас я работаю над физикой.SAT обнаружение столкновений - исправление углов
Я использую алгоритм SAT для обнаружения столкновений. Коллизии: между персонажем (AxisAlignedBoundingBox) и некоторыми прямоугольниками (с поворотом).
Все работает нормально, за исключением столкновения вблизи угла в конкретных ситуациях. (Это довольно известная проблема, но я не нашел хороших решений).
На Примере 1, во второй сцене символ должен двигаться вверх (остаться на препятствии).
Это происходит, чтобы двигаться влево.
Пример 2, во второй сцене символ не должен вставать. Иногда это случается.
Я знаю, почему это происходит, из-за дх и ду, тем Минимальный перевод вектор не всегда хотел один.
Существует несколько решений этой проблемы, но не очень хорошая (с точки зрения решения проблемы, а не для создания других!). Я готов даже использовать совершенно другой алгоритм с самого начала.
Пожалуйста, дайте мне подсказку об алгоритме лучше, чем SAT, или обходной путь.
СПАСИБО!
Не могли бы вы показать код? Какой контакт нормальный вы получаете в каждом случае и что вы ожидаете? (для меня первый должен быть '(0, 1)' и вторым '(-1, 0)', и именно это вы должны смотреть на минимальный вектор перевода) – Zouch
Нет, есть больше аспектов, чем простой движение. dx, dy, гравитация играет роль в этом. ех. MTV: (-2, -0.35) -> персонаж должен переместить -2 на оси X и -0.35 на оси Y, чтобы выйти из столкновений –
Вам нужно указать код и уточнить проблему. Если у вас возникли проблемы с обработкой коллизий, это может быть не связано с алгоритмом, который вы используете для их обнаружения, но с тем, как вы вычисляете ответ. – Zouch