2010-04-17 1 views
2

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

ответ

3

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

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

например, если ваша линия была y=x/2+2, начиная с x = -20, заканчивающегося на x = 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 куба, куб находится ниже линии.

+0

Спасибо за ответ! – Alu

+0

Что делать, если линия была прямой? –

+0

Я думаю, что мой метод все равно будет работать. Он в основном рассматривает строку как поле и проверяет, попадает ли какой-либо из углов спрайта в этот квадрат, который делает линия. Это очень грубый метод, но для простой вещи он будет работать. – thecoshman