diff options
Diffstat (limited to 'client/player/character/character.gd')
| -rw-r--r-- | client/player/character/character.gd | 35 |
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) |