2010-06-20 2 views
1

Я использую механизм обнаружения столкновений для своей игры, и у меня есть некоторые проблемы.Обнаружение столкновений 2D между прямоугольниками

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

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

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

Любая идея?

Kite

ответ

3

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

3

Название является обнаружение столкновений "Ось-выравниванием Ограничительная Box".

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

0

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

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

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