game: add enemy taunt on death

This commit is contained in:
2025-08-19 08:39:50 +02:00
parent a661c02e83
commit 59a8a4a8f3
4 changed files with 104 additions and 4 deletions

View File

@@ -1,3 +1,4 @@
class_name Enemy
extends CharacterBody2D
@export var target: CollisionObject2D
@@ -12,6 +13,7 @@ var move_speed: float
var health: float
var max_health: float
var god_mode: bool = false
var is_dead: bool = false
func _ready() -> void:
move_speed = default_move_speed
@@ -33,6 +35,9 @@ func take_damage(value: float):
if god_mode:
return
health -= value
var dm = preload("res://scenes/damage_numbers.tscn").instantiate()
dm.damage_taken = value
add_child(dm)
if health <= 0:
die()
@@ -43,10 +48,21 @@ func deal_damage():
contact_damage_cd.start()
func die():
queue_free()
if is_dead:
return
is_dead = true
target = null
velocity = Vector2.ZERO
animation_player.play("die")
animation_player.animation_finished.connect(_on_die_anim_finished)
func cheer_anim():
animation_player.play("jump")
if not animation_player.is_playing():
animation_player.play("jump")
func enemy_god_mode_toggle(toggle_on: bool) -> void:
god_mode = toggle_on
func _on_die_anim_finished(name: String):
visible = false
queue_free()

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=7 format=3 uid="uid://bn8c0cgecvjxl"]
[gd_scene load_steps=8 format=3 uid="uid://bn8c0cgecvjxl"]
[ext_resource type="Texture2D" uid="uid://5x5wimok8uw2" path="res://assets/sprites/roguelikeChar_transparent.png" id="1_6xk8f"]
[ext_resource type="Script" uid="uid://ctigdofipl4q5" path="res://scenes/enemies/enemy.gd" id="1_8e3ao"]
@@ -20,6 +20,30 @@ tracks/0/keys = {
"update": 0,
"values": [Vector2(0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite2D:modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
[sub_resource type="Animation" id="Animation_8e3ao"]
resource_name = "jump"
@@ -38,9 +62,38 @@ tracks/0/keys = {
"values": [Vector2(0, 0), Vector2(0, -7)]
}
[sub_resource type="Animation" id="Animation_fcftc"]
resource_name = "die"
length = 2.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite2D:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(0.225313, -2),
"update": 0,
"values": [0.0, 1.5708]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite2D:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1, 2),
"transitions": PackedFloat32Array(1, 0.287175, 0.406126),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_38ino"]
_data = {
&"RESET": SubResource("Animation_38ino"),
&"die": SubResource("Animation_fcftc"),
&"jump": SubResource("Animation_8e3ao")
}