matador animationingng
This commit is contained in:
+18
-17
@@ -25,12 +25,14 @@ var _ole_player: AudioStreamPlayer = null
|
||||
var _death_player: AudioStreamPlayer = null
|
||||
var _blood_burst: CPUParticles3D = null
|
||||
|
||||
@onready var _mesh: Node3D = $matador_v02
|
||||
@onready var _mesh: Node3D = $matador2
|
||||
@onready var _hit_area: Area3D = $HitArea
|
||||
@onready var _body_col: CollisionShape3D = $CollisionShape3D
|
||||
|
||||
const _WALK_ANIM: StringName = &"Armature|walk"
|
||||
const _IDLE_ANIM: StringName = &"Armature|idle"
|
||||
const _ANIM_RUN: StringName = &"Run"
|
||||
const _ANIM_IDLE: StringName = &"Taunt"
|
||||
const _ANIM_ATTACK: StringName = &"Attack"
|
||||
const _ANIM_ROLL: StringName = &"Roll"
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
@@ -40,12 +42,12 @@ func _ready() -> void:
|
||||
if _skeleton:
|
||||
_sim = _setup_physical_bones()
|
||||
if _anim_player:
|
||||
_ensure_loop(_WALK_ANIM)
|
||||
if _anim_player.has_animation(_IDLE_ANIM):
|
||||
_anim_player.play(_IDLE_ANIM)
|
||||
else:
|
||||
push_warning("Matador: idle animation not found. Available: %s" %
|
||||
for anim in [_ANIM_RUN, _ANIM_IDLE, _ANIM_ATTACK, _ANIM_ROLL]:
|
||||
_ensure_loop(anim)
|
||||
if not _anim_player.has_animation(_ANIM_RUN):
|
||||
push_warning("Matador: expected animations not found. Available: %s" %
|
||||
str(_anim_player.get_animation_list()))
|
||||
_anim_player.play(_ANIM_IDLE)
|
||||
_hit_area.body_entered.connect(_on_body_entered)
|
||||
_pick_wander_target()
|
||||
_setup_blood_burst()
|
||||
@@ -118,7 +120,7 @@ func _tick_wander(delta: float) -> void:
|
||||
_idle_timer -= delta
|
||||
velocity.x = move_toward(velocity.x, 0.0, 10.0 * delta)
|
||||
velocity.z = move_toward(velocity.z, 0.0, 10.0 * delta)
|
||||
_play_anim(_IDLE_ANIM)
|
||||
_play_anim(_ANIM_IDLE)
|
||||
move_and_slide()
|
||||
return
|
||||
|
||||
@@ -134,7 +136,7 @@ func _tick_wander(delta: float) -> void:
|
||||
velocity.z = dir.z * spd
|
||||
_mesh.rotation.y = lerp_angle(
|
||||
_mesh.rotation.y, atan2(velocity.x, velocity.z), delta * 8.0)
|
||||
_play_anim(_WALK_ANIM)
|
||||
_play_anim(_ANIM_RUN)
|
||||
move_and_slide()
|
||||
|
||||
|
||||
@@ -148,7 +150,7 @@ func _tick_flee(delta: float) -> void:
|
||||
velocity.x = away.x * spd
|
||||
velocity.z = away.z * spd
|
||||
_mesh.rotation.y = lerp_angle(_mesh.rotation.y, atan2(velocity.x, velocity.z), delta * 8.0)
|
||||
_play_anim(_WALK_ANIM)
|
||||
_play_anim(_ANIM_RUN)
|
||||
move_and_slide()
|
||||
|
||||
|
||||
@@ -181,7 +183,7 @@ func _tick_brace(delta: float) -> void:
|
||||
if to_bull.length() > 0.1:
|
||||
_mesh.rotation.y = lerp_angle(
|
||||
_mesh.rotation.y, atan2(to_bull.x, to_bull.z), delta * 14.0)
|
||||
_play_anim(_IDLE_ANIM)
|
||||
_play_anim(_ANIM_ATTACK)
|
||||
move_and_slide()
|
||||
|
||||
_brace_timer -= delta
|
||||
@@ -212,7 +214,7 @@ func _tick_sidestep(delta: float) -> void:
|
||||
velocity.z = _step_dir.z * spd
|
||||
# Snap facing quickly to sell the movement
|
||||
_mesh.rotation.y = lerp_angle(_mesh.rotation.y, atan2(velocity.x, velocity.z), delta * 20.0)
|
||||
_play_anim(_WALK_ANIM)
|
||||
_play_anim(_ANIM_ROLL)
|
||||
move_and_slide()
|
||||
|
||||
|
||||
@@ -375,12 +377,11 @@ func _ensure_loop(anim_name: StringName) -> void:
|
||||
|
||||
|
||||
func _play_anim(anim_name: StringName) -> void:
|
||||
if not _anim_player:
|
||||
if _anim_player == null:
|
||||
return
|
||||
if not _anim_player.has_animation(anim_name):
|
||||
if _anim_player.current_animation == anim_name:
|
||||
return
|
||||
if _anim_player.current_animation != anim_name:
|
||||
_anim_player.play(anim_name)
|
||||
_anim_player.play(anim_name)
|
||||
|
||||
|
||||
func _pick_wander_target() -> void:
|
||||
|
||||
Reference in New Issue
Block a user