У меня возникла проблема с обнаружением столкновений с моей игрой на C++. Я сначала попробовал AABB и успешно получил его для обнаружения столкновения, но проблема заключалась в том, что я хочу быть в состоянии подталкивать друг друга, поэтому я пошел с базовым решением, чтобы подтолкнуть оба объекта к половине пройденного расстояния. Но это только подтолкнуло предметы под углом 45 градусов друг к другу. Link to GIF explaining what i meanAABB Ответ на столкновение (Push Back сталкивающиеся объекты)
ЕСЛИ ВЫ НЕ ХОТИТЕ ПРОЧИТАТЬ пропускаем этот пункт
Так что я решил, что мне нужно направление, чтобы раздвинуть объекты, поэтому я попытался изменить код из учебника. Направление - это нормализованный вектор между центром обоих объектов. И тогда половина глубины столкновения умножается на нормализованный вектор, поэтому они оказываются в противоположном направлении друг от друга. Это сработало, но оно использовало круговое столкновение (он использовал радиус + радиус для вычисления глубины столкновения), и это означало, что я не мог использовать прямоугольники с разной шириной и высотой, например 32x64 48x32 (мне пришлось использовать 32x32 48x48 64x64 и так далее так далее). Это большая проблема, потому что Мне НЕОБХОДИМО ИСПОЛЬЗОВАТЬ ТЕКСТУРЫ С РАЗЛИЧНОЙ ШИРИНЫ И ВЫСОТЫ.
Итак, снова вернулся в AABB и получил его, чтобы работать, не имея возможности подталкивать друг друга, поэтому вы просто остановитесь. Но проблема здесь в том, что когда я сталкиваюсь на одной оси, я не могу двигаться в другой. Например, если я удерживаю UP и LEFT и сталкиваюсь со стеной на LEFT, я заканчиваю полную остановку, а не продолжаю движение вверх, где нет стены.
ТАК ЧТО Я ХОЧУ ПОМОЧЬ IS либо ААББ столкновения, где объекты толкают друг друг с половиной расстояния проникали в правильном направлении или просто AABB, где вы пришли к полной остановке НО может ходить в не направление встречными при столкновении на другой оси, например Holding down up and down would result in this
Интересный вопрос; но почему тег «java»? – GhostCat
Если это не просто учебное упражнение, я бы рекомендовал познакомиться с Bullet (физическая библиотека). Это отлично для всех этих вещей. – Robinson
@ EddyG Извините, если я неправильно использовал теги. Разве AABB не используется в играх JAVA? Возможно, я ошибаюсь. Java Tag Removed – DeeLaY