From f27937e6e9b6a7146dd09fc711d2d293ecf5abbf Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Sun, 14 Apr 2024 21:49:20 +0200 Subject: update --- Scenes/Entities/Enemies/Balloon.gd | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Scenes/Entities/Enemies/Balloon.gd (limited to 'Scenes/Entities/Enemies/Balloon.gd') diff --git a/Scenes/Entities/Enemies/Balloon.gd b/Scenes/Entities/Enemies/Balloon.gd new file mode 100644 index 0000000..bc79f24 --- /dev/null +++ b/Scenes/Entities/Enemies/Balloon.gd @@ -0,0 +1,43 @@ +extends CharacterBody2D + + +@export var health: int + + +func _ready(): + add_to_group("enemies") + + get_node("Collision").init() + + get_node("Movement").connect("direction_changed", func(current_direction): + var frame = $AnimatedSprite2D.frame + var progress = $AnimatedSprite2D.frame_progress + if current_direction == Vector2.UP: + $AnimatedSprite2D.play("up") + elif current_direction == Vector2.DOWN: + $AnimatedSprite2D.play("down") + elif current_direction == Vector2.LEFT: + $AnimatedSprite2D.play("left") + elif current_direction == Vector2.RIGHT: + $AnimatedSprite2D.play("right") + $AnimatedSprite2D.set_frame_and_progress(frame, progress) + ) + + get_node("Collision").connect("collided", func(area): + if area.is_in_group("explosions"): + health -= 1 + if health <= 0: + set_physics_process(false) + remove_child(get_node("Movement")) + + $AnimatedSprite2D.play("death") + await $AnimatedSprite2D.animation_finished + # todo shrink to 0 + queue_free() + ) + + +func _physics_process(delta): + get_node("Movement").physics_process(delta) + + # todo: animation shadow -- cgit v1.2.3