Столкновение спрайтов с линиями - PullRequest
2 голосов
/ 17 апреля 2010

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

1 Ответ

3 голосов
/ 17 апреля 2010

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

Как только вы это сделаете, я бы посоветовал вам получить «формулу» для вашей строки, а затем проверить, какие из углов вашего спрайта лежат выше или ниже этой линии. Если они не все лежат на одной стороне, у вас есть столкновение.

Например,

, если ваша линия была y=x/2+2, начиная с х = -20 и заканчивая х = 20, и у вас был квадратный спрайт 3 ширины / максимума в (3, -1), тогда у вас есть четыре точки вашего спирт (3, -1) (3,2) (6,2) (6, -1). Вы вычисляете значение y линии в этих двух положениях x, что дает вам y = 3.5 при x = 3 и y = 5 при x = 6, все эти значения y больше значений y куба, таким образом, куб находится ниже линии.

...