summaryrefslogtreecommitdiff
path: root/client/player/character/character.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/player/character/character.gd')
-rw-r--r--client/player/character/character.gd35
1 files changed, 34 insertions, 1 deletions
diff --git a/client/player/character/character.gd b/client/player/character/character.gd
index 847bd7b6..76e7b6b3 100644
--- a/client/player/character/character.gd
+++ b/client/player/character/character.gd
@@ -16,13 +16,46 @@
extends Node3D
class_name Character
+const WALK_ANIM_STRENGTH := 0.05
+const WALK_ANIM_SPEED:= 15.0
+
+var walking := false
+var holding := false
+
+var current_animation := "idle"
+
@onready var hand_animations = $HandAnimations
+@onready var main = $Main
+@onready var default_height = main.position.y
+@onready var main_height_target = default_height
func _ready():
play_animation("idle")
+var t := 0.0
+func _process(delta):
+ if walking:
+ t += delta
+ main_height_target = default_height + sin(t * WALK_ANIM_SPEED) * WALK_ANIM_STRENGTH
+ else:
+ t = 0
+ main.position.y = main_height_target
+
+ # Update animation:
+ var next_animation: String
+ if holding:
+ next_animation = "hold"
+ elif walking:
+ next_animation = "walk"
+ else:
+ next_animation = "idle"
+
+ if current_animation != next_animation:
+ play_animation(next_animation)
+
func play_animation(name_: String):
+ current_animation = name_
hand_animations.play(name_)
func _on_hand_animations_animation_finished(name_):
- hand_animations.play(name_)
+ hand_animations.play(current_animation)