Две коробки сталкиваются, какая ось должна измениться? - PullRequest
0 голосов
/ 10 июня 2018

Когда игрок сталкивается с блоком, я перемещаю его, основываясь на наименьшем изменении оси, что имеет смысл.

Однако, когда многие блоки взаимодействуют друг с другом, это сбивает с толку.

Box Collisions

  • Черный квадрат - игрок, движущийся
  • Красные / синие квадраты - блоки, статические

Из этого примераигрок, очевидно, должен двигаться вверх, но у ящиков по отдельности разные точки обзора

  • Синяя коробка сталкивается больше по оси Y, поэтому черный ящик должен двигаться влево.Это станет проще, если вы будете притворяться, что красное поле не существует
  • Красное поле больше сталкивается по оси X, поэтому черный ящик должен двигаться вверх

Как сделатьЯ знаю, какая коробка правильная?

1 Ответ

0 голосов
/ 10 июня 2018

Решение состоит в том, чтобы найти ближайшие блоки для X и Y

. В этом случае красный блок находится ближе к оси X, поэтому его следует использовать для фиксации оси Y

* 1004.* Также, чтобы предотвратить перемещение игрока в угол, добавьте буфер благодати.На изображении ниже фиолетовая и зеленая области немного меньше размера игрока.

Box Collisions

Если блок находится ближе всего к одному изосей, и он находится в этой области, то его следует использовать для столкновений

...