diff options
Diffstat (limited to 'godot/scenes/environment/Ladder.gd')
| -rw-r--r-- | godot/scenes/environment/Ladder.gd | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/godot/scenes/environment/Ladder.gd b/godot/scenes/environment/Ladder.gd new file mode 100644 index 0000000..af31c3f --- /dev/null +++ b/godot/scenes/environment/Ladder.gd @@ -0,0 +1,21 @@ +extends Spatial + +onready var top = $Top +onready var bottom = $Bottom + +func _ready(): + if !OS.is_debug_build(): + $DebugVisMesh.visible = false + +#point at which a player should enter the ladder given their current location +func get_nearest_point_to_route(point_global: Vector3) -> Vector3: + var t : Vector3 = top.global_transform.origin + var b : Vector3 = bottom.global_transform.origin + return b + clamp(get_climb_scalar(point_global), 0.0, 1.0)*(t-b) + +#ladder climb "progress" +func get_climb_scalar(point_global: Vector3) -> float: + var t : Vector3 = top.global_transform.origin + var b : Vector3 = bottom.global_transform.origin + #(T−B)⋅(P-B) / (T−B)⋅(T−B) + return (t-b).dot(point_global-b) / (t-b).dot(t-b) |
