51 lines
1.5 KiB
GDScript
51 lines
1.5 KiB
GDScript
class_name PawnBody extends Node3D
|
|
|
|
@export var projectile_template : PackedScene
|
|
|
|
@onready var anim_player : AnimationPlayer = %AnimationPlayer
|
|
@onready var ranged_point : Node3D = %RangedPoint
|
|
#@onready var material : StandardMaterial3D = $Mesh.material
|
|
@onready var struggle_ui : Sprite3D = %StruggleUI
|
|
@onready var struggle_bar : ProgressBar = %StruggleBar
|
|
@onready var anim_tree : AnimationTree = %AnimationTree
|
|
@onready var anim_machine : AnimationNodeStateMachinePlayback = %AnimationTree.get("parameters/playback")
|
|
|
|
@onready var walk_sound : AudioStreamPlayer3D = $WalkSound
|
|
@onready var footstep_timer : Timer = $FootstepTimer
|
|
|
|
@rpc("call_local")
|
|
func play_animation(anim_name : String) -> void:
|
|
anim_player.play(anim_name)
|
|
|
|
@rpc("call_local")
|
|
func travel_animation(node_name : String) -> void:
|
|
anim_machine.travel(node_name)
|
|
|
|
|
|
@rpc("call_local")
|
|
func show_struggle() -> void:
|
|
struggle_ui.visible = true
|
|
|
|
func set_animation_parameter(parameter : String, value : Variant) -> void:
|
|
anim_tree.set(parameter, value)
|
|
|
|
func stop_footsteps() -> void:
|
|
footstep_timer.stop()
|
|
|
|
func play_footsteps(step_time : float = 1) -> void:
|
|
if footstep_timer.is_stopped():
|
|
walk_sound.play()
|
|
footstep_timer.start(step_time)
|
|
elif footstep_timer.wait_time != step_time:
|
|
footstep_timer.wait_time = step_time
|
|
|
|
func _on_struggle_changed(value : float) -> void:
|
|
if value <= 0:
|
|
struggle_ui.visible = false
|
|
else:
|
|
struggle_bar.value = value
|
|
|
|
|
|
func _on_footstep_timer_timeout() -> void:
|
|
walk_sound.play()
|