2D Collision (возвращает столкнувшуюся сторону) - PullRequest
1 голос
/ 21 марта 2011

Марио играет в несколько игр.Обычно, играя в игру, когда он прыгает [под] блоком вопросов, он получает бесплатный сюрприз.Когда он встречает Гумбу или другого опасного хулигана, он просто прыгает с ног на голову.После перехода в другую игру Марио, как обычно, запрыгивает под вопросительный ящик и обнаруживает, что ничего не происходит.Марио прыгает на вершину Гумба и умирает.Марио очень растерян, что здесь не так?

В этой новой игре есть обнаружение столкновений (отсюда и смерть от Гумбы), но он не знает, как определить, с какой стороной столкнулся.Предполагая, что только одна сторона может сталкиваться за один раз, и что левая часть Марио может сталкиваться только с правой стороной объекта (правая-> левая; верхняя-> нижняя; и т. Д.).

Как я могупроведите тестирование столкновений, которое также показывает, с какой стороны столкнулся бедный Марио (чтобы прыжок [под] коробкой доставил ему сюрприз, но прыжок [на] коробку ему ничего не дает).

Псевдокодбыть оцененным.

1 Ответ

1 голос
/ 21 марта 2011

Вы можете использовать текущую скорость, если ваш движок / игра не имеет проблем с задержкой.

Например:

  • касание поля: если вертикальная скорость не является положительной', нет подарка
  • касаясь врага: если вертикальная скорость не является «отрицательной», смерть

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

...