5 @export_category("Tracking")
6 @export var head_influence: float = 0.5
7 @export var eye_influence: float = 1.0
10 @onready var _animation_tree: AnimationTree = $AnimationTree
11 @onready var _head: TrackingBone3D_head = $base/rig/Skeleton3D/head
12 @onready var _eye_L: TrackingBone3D = $base/rig/Skeleton3D/eye_L
13 @onready var _eye_R: TrackingBone3D = $base/rig/Skeleton3D/eye_R
17 func set_eyes_target(target: Vector3) -> void:
18 for eye in [ _eye_L, _eye_R ]:
20 eye.active = target != Vector3.ZERO
21 eye.influence = eye_influence
25 func set_head_target(target: Vector3) -> void:
27 _head.active = target != Vector3.ZERO
28 _head.influence = head_influence
31 # manage talking and expressions
33 _animation_tree.set("parameters/motion/transition_request", "talk")
36 # manage vectored movement
37 func current_state() -> String:
38 return _animation_tree.get("parameters/motion/current_state")
41 func set_hips_direction(direction: float) -> void:
42 _animation_tree.set("parameters/hips_direction/blend_position", clamp(direction, -PI / 2, PI / 2))
45 func get_hips_direction() -> float:
46 return _animation_tree.get("parameters/hips_direction/blend_position")
50 _animation_tree.set("parameters/motion/transition_request", "pose")
54 _animation_tree.set("parameters/motion/transition_request", "idle")
57 func move_forward() -> void:
58 _animation_tree.set("parameters/motion/transition_request", "forward")
61 func move_backward() -> void:
62 _animation_tree.set("parameters/motion/transition_request", "backward")
65 func movement_speed(speed: float) -> void:
66 _animation_tree.set("parameters/forward/blend_position", speed)
67 _animation_tree.set("parameters/backward/blend_position", speed)
71 _animation_tree.set("parameters/motion/transition_request", "fall")
75 _animation_tree.set("parameters/motion/transition_request", "fall")
78 func landing() -> void:
79 _animation_tree.set("parameters/motion/transition_request", "landing")