Обнаружение столкновения 2D между прямоугольниками - PullRequest
1 голос
/ 20 июня 2010

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

Действительно, поскольку у меня есть несколько фиксированных прямоугольников и одно движущееся (игрок), мне нужно знать, какая сторона фиксированныхигрок сначала столкнулся с ним, чтобы правильно заменить его.

Фиксированный прямоугольник НЕ находится в сетке, поэтому его можно разместить в любом месте на карте и иметь разный размер.Они не вращаются.

Класс игрока хранит вектор направления.

Есть идеи?

KiTe

Ответы [ 3 ]

3 голосов
/ 20 июня 2010

В двух словах:
Вы будете сравнивать компоненты Y и X ограничивающих прямоугольников друг с другом, чтобы проверить наличие столкновения. Если верх (Y) игрока меньше, чем низ врага, вам больше не нужно проверять, потому что они не могут столкнуться. Если правая (X) сторона игрока меньше левой стороны противника, тогда они не могут сталкиваться. Это поможет определить верхнюю, правую, нижнюю, левую сторону каждого объекта, который вы собираетесь проверять внутри класса. Это позволит вам узнать, какая сторона также поражена. Этого должно быть достаточно, чтобы вы думали и экспериментировали.
Веселись!

3 голосов
/ 20 июня 2010

Название - «Обнаружение столкновения с помощью выровненной оси».

Теперь вы знаете имя, вы можете Google для остальных.

0 голосов
/ 23 июня 2010

спасибо вам обоим за вашу помощь.

Я слышал об AABB, но, на первый взгляд, он не соответствовал моим потребностям (так как я плохо понимал это).

Но после того, как все записали на papper, решение, которое я нашел, оказалось точно таким же, как AABB!

...