blob: af31c3f1a41143a97223f5d3d79977443a6d1d21 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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)
|