Проверьте, с какой стороны один прямоугольник сталкивается с другим

#collision-detection #game-physics

#обнаружение столкновений #игра-физика

Вопрос:

Я создаю игру, чем-то похожую на Breakout. Рассмотрим сцену, когда маленький движущийся прямоугольник сталкивается с большим неподвижным.

демонстрация

Вы видите, что направление, в котором будет отброшен маленький прямоугольник, зависит от того, с какой стороной большого прямоугольника он столкнется (снизу или слева). С одним и тем же прямоугольником столкновения (красный), как отличить два случая?

Ответ №1:

Вы, кажется, ответили на вопрос своей собственной диаграммой.

Идеально упругие отскоки не зависят от характера пересечения. Они зависят от направления (ов) движения и касательной в точке контакта (также угловой скорости, если они вращаются).

При перемещении прямоугольников, выровненных по осям, параллельно осям, касательная всегда находится под прямым углом (90 градусов) к направлению движения.

Даже если движение не параллельно осям (вы не сказали, так ли это, только подразумевали это), вам нужно только определить, какие поверхности соприкоснулись первыми. Это легко сделать на основе вектора скорости и двух смещений пересечения. Просто подсчитайте два раза в прошлом, когда прямоугольники соприкасались по обеим осям x и y. Вам нужно более раннее время.

Комментарии:

1. Просто подсчитайте, сколько раз в прошлом прямоугольники соприкасались по обеим осям x и y. Я придумал это сам, но сомневаюсь, и вы помогаете мне подтвердить это, так что спасибо. Я нашел здесь много информации, как насчет связанной? Можете ли вы порекомендовать мне несколько книг или ссылок? пожалуйста.

2. Это потрясающе, imo: amazon.es/Game-Physics-David-H-Eberly/dp/0123749034 Дорого, но оно того стоит. Множество бесплатных материалов в Интернете являются неполными или даже откровенно неправильными. Eberly является строгим и понятным, хотя для получения полной выгоды вам нужен математический анализ. Исчисление отпугивает некоторых людей. Не будь одним из них. В любом случае вам это понадобится, чтобы продвинуться намного дальше, чем вы находитесь в данный момент.

3. Согласен. Я изучал исчисление раньше, и теперь, возможно, мне следует сделать обзор. Но я обнаружил, что многие старые игры, похоже, используют упрощенные способы определения реакции на столкновение. Для примера проверьте это . Для работы в режиме реального времени используются численные методы и хитрости. В любом случае, еще раз спасибо.