added enemy state machine with idle, stunned, and dead states

This commit is contained in:
derek
2025-04-21 16:41:16 -05:00
parent 423feb8fc3
commit ca81947325
20 changed files with 1289 additions and 539 deletions

24
scripts/EnemyStates.gd Normal file
View File

@@ -0,0 +1,24 @@
extends State
class_name EnemyState
@export var enemy : CharacterBody3D
@export var enemy_targets : Array[Area3D]
@export var move_speed : float = 3
func Enter():
if enemy_targets != null:
for target in enemy_targets:
target.body_part_hit.connect(take_damage)
func take_damage(dam,bullet_damage):
SignalBus.emit_signal("enemy_hit")
enemy.health -= dam * bullet_damage
enemy.health_bar_sprite.visible = true
enemy.health_bar_sprite.health_update()
var number_spawn = enemy.damage_number.instantiate()
number_spawn.damage_amt = bullet_damage * dam
number_spawn.position = enemy.global_position + Vector3(0,2,0)
get_tree().get_root().add_child(number_spawn)
if enemy.health <= 0:
Transitioned.emit(self,"die")