diff options
Diffstat (limited to 'Scenes/Entities/Enemies/Components/Health.gd')
-rw-r--r-- | Scenes/Entities/Enemies/Components/Health.gd | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/Scenes/Entities/Enemies/Components/Health.gd b/Scenes/Entities/Enemies/Components/Health.gd new file mode 100644 index 0000000..f5e231e --- /dev/null +++ b/Scenes/Entities/Enemies/Components/Health.gd @@ -0,0 +1,39 @@ +extends Node + +class_name Component_Health + + +@export_node_path("CharacterBody2D") var entityPath: NodePath +@onready var entity: CharacterBody2D = get_node(entityPath) + +@export_node_path("AnimatedSprite2D") var spritePath: NodePath +@onready var sprite: AnimatedSprite2D = get_node(spritePath) + +@export var health: int + + +func take_damage(): + health -= 1 + + if health <= 0: + death() + + +func death(): + entity.set_physics_process(false) + + sprite.play("death") + await sprite.animation_finished + + sprite.play("death_post") + + var tween: Tween = get_tree().create_tween() + tween.tween_property( + entity, + "scale", + Vector2(0, 0), + 1 / sprite.sprite_frames.get_animation_speed("death_post") + ) + tween.tween_callback(func(): + entity.queue_free() + ) |