5 @export_category("Tracking")
6 @export var head_influence: float = 0.6
7 @export var eye_influence: float = 1.0
10 @onready var _animation_tree: AnimationTree = $AnimationTree
11 @onready var _head: TrackingBone3D_head = $base/rig/Skeleton3D/track_head
12 @onready var _eye_L: TrackingBone3D = $base/rig/Skeleton3D/track_eye_L
13 @onready var _eye_R: TrackingBone3D = $base/rig/Skeleton3D/track_eye_R
16 func set_eyes_target(target: Node3D) -> void:
17 for eye in [ _eye_L, _eye_R ]:
19 eye.active = target != null
20 eye.influence = eye_influence
23 func set_head_target(target: Node3D) -> void:
26 _head.tween_influence(0.0 if target == null else head_influence)
29 # manage talking and expressions
31 _animation_tree.set("parameters/motion/transition_request", "talk")
34 # manage vectored movement
35 func current_state() -> String:
36 return _animation_tree.get("parameters/motion/current_state")
39 func set_hips_direction(direction: float) -> void:
40 _animation_tree.set("parameters/hips_direction/blend_position", clamp(direction, -PI / 2, PI / 2))
43 func get_hips_direction() -> float:
44 return _animation_tree.get("parameters/hips_direction/blend_position")
48 _animation_tree.set("parameters/motion/transition_request", "pose")
52 _animation_tree.set("parameters/motion/transition_request", "idle")
55 func move_forward() -> void:
56 _animation_tree.set("parameters/motion/transition_request", "forward")
59 func move_backward() -> void:
60 _animation_tree.set("parameters/motion/transition_request", "backward")
63 func movement_speed(speed: float) -> void:
64 _animation_tree.set("parameters/forward/blend_position", speed)
65 _animation_tree.set("parameters/backward/blend_position", speed)
69 _animation_tree.set("parameters/motion/transition_request", "fall")
73 _animation_tree.set("parameters/motion/transition_request", "fall")
76 func landing() -> void:
77 _animation_tree.set("parameters/motion/transition_request", "landing")