]> Untitled Git - william-skin.git/blob - william.gd
Fixed head snapping by adding a default tracking target to the william skin
[william-skin.git] / william.gd
1 class_name WilliamSkin 
2 extends Node3D
3
4
5 @export_category("Tracking")
6 @export var head_influence: float = 0.6
7 @export var eye_influence: float = 1.0
8
9
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
14 @onready var _default_target = $defaultTrackingTarget
15
16
17 func set_eyes_target(target: Node3D) -> void:
18         for eye in [ _eye_L, _eye_R ]:
19                 eye.target = target if target != null else _default_target
20                 eye.active = 1
21                 eye.influence = eye_influence
22
23
24 func set_head_target(target: Node3D) -> void:
25         _head.target = target if target != null else _default_target
26         _head.active = 1
27         _head.tween_influence(0.0 if target == null else head_influence)
28
29
30 # manage talking and expressions
31 func talk() -> void:
32         _animation_tree.set("parameters/motion/transition_request", "talk")
33
34
35 # manage vectored movement
36 func current_state() -> String:
37         return _animation_tree.get("parameters/motion/current_state")
38
39
40 func set_hips_direction(direction: float) -> void:
41         _animation_tree.set("parameters/hips_direction/blend_position", clamp(direction, -PI / 2, PI / 2))
42
43
44 func get_hips_direction() -> float:
45         return _animation_tree.get("parameters/hips_direction/blend_position")
46
47
48 func pose() -> void:
49         _animation_tree.set("parameters/motion/transition_request", "pose")
50
51
52 func idle() -> void:
53         _animation_tree.set("parameters/motion/transition_request", "idle")
54
55
56 func move_forward() -> void:
57         _animation_tree.set("parameters/motion/transition_request", "forward")
58
59
60 func move_backward() -> void:
61         _animation_tree.set("parameters/motion/transition_request", "backward")
62
63
64 func movement_speed(speed: float) -> void:
65         _animation_tree.set("parameters/forward/blend_position", speed)
66         _animation_tree.set("parameters/backward/blend_position", speed)
67
68
69 func jump() -> void:
70         _animation_tree.set("parameters/motion/transition_request", "fall")
71
72
73 func fall() -> void:
74         _animation_tree.set("parameters/motion/transition_request", "fall")
75
76
77 func landing() -> void:
78         _animation_tree.set("parameters/motion/transition_request", "landing")