26 lines
686 B
GDScript
26 lines
686 B
GDScript
extends Node2D
|
|
|
|
class_name Spline
|
|
|
|
var points : PackedVector2Array
|
|
|
|
var curve_points : PackedVector2Array
|
|
|
|
func get_point_at(distance : float):
|
|
var current_point : int = 0
|
|
while true:
|
|
if current_point >= len(curve_points)-1:
|
|
return null
|
|
|
|
if distance > curve_points[current_point].distance_to(curve_points[current_point + 1]):
|
|
distance -= curve_points[current_point].distance_to(curve_points[current_point + 1])
|
|
else:
|
|
return lerp(curve_points[current_point],curve_points[current_point+1], distance/(curve_points[current_point].distance_to(curve_points[current_point + 1])))
|
|
|
|
current_point += 1
|
|
|
|
if distance < 0:
|
|
break
|
|
|
|
return curve_points[current_point]
|