Некоторая простая логика может помочь уменьшить потерянные вычисления, т. Е. Если вершина спрайта ниже, чем обе точки, вы не можете столкнуться. Вроде простой ограничивающий прямоугольник проверки столкновения.
Как только вы это сделаете, я бы посоветовал вам получить «формулу» для вашей строки, а затем проверить, какие из углов вашего спрайта лежат выше или ниже этой линии. Если они не все лежат на одной стороне, у вас есть столкновение.
Например,
, если ваша линия была 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 куба, таким образом, куб находится ниже линии.