add enemy death animation

This commit is contained in:
2025-10-22 12:30:46 +01:00
parent f9a218159c
commit 4338abab62
8 changed files with 240 additions and 42 deletions

View File

@@ -1,9 +0,0 @@
extends Area2D
@onready var hit_sound: AudioStreamPlayer2D = $HitSound
signal killed()
func _on_body_entered(_body: Node2D) -> void:
hit_sound.play()
killed.emit()

View File

@@ -1 +0,0 @@
uid://b3mc3t5k3yr7y

View File

@@ -376,7 +376,7 @@ tile_set = SubResource("TileSet_p57ef")
[node name="Mid" type="TileMapLayer" parent="."] [node name="Mid" type="TileMapLayer" parent="."]
use_parent_material = true use_parent_material = true
position = Vector2(1, 0) position = Vector2(1, 0)
tile_map_data = PackedByteArray("AAABAAQAAAAAAAAAAAACAAQAAAAAAAAAAAABAAUAAAAAAAEAAAACAAYAAAAAAAEAAAACAAUAAAAAAAEAAAAEAAcAAAAGAAEAAAADAAcAAAAGAAEAAAAKAAcAAAAGAAEAAAAJAAcAAAAGAAEAAAANAAcAAAAGAAEAAAD//wYAAAAAAAAAAAAAAAYAAAAAAAAAAAADAAYAAAAGAAAAAAAFAAYAAAAGAAAAAAD//wcAAAAAAAEAAAAAAAcAAAAAAAEAAAABAAcAAAAAAAEAAAAAAAgAAAAAAAEAAAABAAgAAAAAAAEAAAACAAgAAAAAAAEAAAADAAgAAAAGAAEAAAAFAAgAAAAGAAEAAAAJAAgAAAAGAAEAAAAKAAgAAAAGAAEAAAANAAgAAAAGAAEAAAAOAAgAAAAGAAEAAAAKAAYAAAAGAAAAAAAJAAYAAAAGAAAAAAAOAAYAAAAGAAAAAAAEAAEAAAAAAAEAAAAGAAEAAAAAAAEAAAAHAAIAAAAAAAEAAAAIAAIAAAAAAAEAAAALAAIAAAAAAAEAAAANAAIAAAAAAAEAAAAOAAIAAAAAAAEAAAANAAEAAAAAAAEAAAAMAAEAAAAAAAEAAAAFAAAAAAAAAAEAAAAGAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAFAP//AAAAAAAAAAAGAP//AAAAAAAAAAAHAAEAAAAAAAAAAAAIAAEAAAAAAAAAAAALAAEAAAAAAAAAAAAMAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAOAAEAAAAAAAAAAAAGAAYAAAAJAAAAAAAHAAYAAAAKAAAAAAAIAAYAAAALAAAAAAAPAAIAAAAEAAAAAAAQAAIAAAAEAAAAAAARAAIAAAAEAAAAAAAPAAMAAAAEAAEAAAAQAAMAAAAEAAEAAAARAAMAAAAEAAEAAAARAAQAAAAEAAEAAAASAAUAAAAEAAEAAAATAAUAAAAEAAEAAAAUAAUAAAAEAAEAAAAUAAYAAAAEAAEAAAAUAAgAAAAEAAEAAAASAAMAAAAFAAAAAAATAAQAAAAFAAEAAAASAAQAAAAEAAEAAAAUAAQAAAAEAAAAAAAVAAQAAAAEAAAAAAAUAAcAAAAEAAEAAAAVAAUAAAAEAAEAAAAVAAgAAAAEAAEAAAAVAAYAAAAEAAEAAAAMAAIAAAABAAAAAAAFAAEAAAABAAEA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") tile_map_data = PackedByteArray("AAABAAQAAAAAAAAAAAACAAQAAAAAAAAAAAABAAUAAAAAAAEAAAACAAYAAAAAAAEAAAACAAUAAAAAAAEAAAAEAAcAAAAGAAEAAAADAAcAAAAGAAEAAAAKAAcAAAAGAAEAAAAJAAcAAAAGAAEAAAANAAcAAAAGAAEAAAD//wYAAAAAAAAAAAAAAAYAAAAAAAAAAAADAAYAAAAGAAAAAAAFAAYAAAAGAAAAAAD//wcAAAAAAAEAAAAAAAcAAAAAAAEAAAABAAcAAAAAAAEAAAAAAAgAAAAAAAEAAAABAAgAAAAAAAEAAAACAAgAAAAAAAEAAAADAAgAAAAGAAEAAAAFAAgAAAAGAAEAAAAJAAgAAAAGAAEAAAAKAAgAAAAGAAEAAAANAAgAAAAGAAEAAAAOAAgAAAAGAAEAAAAJAAYAAAAGAAAAAAAOAAYAAAAGAAAAAAAEAAEAAAAAAAEAAAAGAAEAAAAAAAEAAAAHAAIAAAAAAAEAAAAIAAIAAAAAAAEAAAALAAIAAAAAAAEAAAANAAIAAAAAAAEAAAAOAAIAAAAAAAEAAAANAAEAAAAAAAEAAAAMAAEAAAAAAAEAAAAFAAAAAAAAAAEAAAAGAAAAAAAAAAEAAAAEAAAAAAAAAAAAAAAFAP//AAAAAAAAAAAGAP//AAAAAAAAAAAHAAEAAAAAAAAAAAAIAAEAAAAAAAAAAAALAAEAAAAAAAAAAAAMAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAOAAEAAAAAAAAAAAAGAAYAAAAJAAAAAAAHAAYAAAAKAAAAAAAIAAYAAAALAAAAAAAPAAIAAAAEAAAAAAAQAAIAAAAEAAAAAAARAAIAAAAEAAAAAAAPAAMAAAAEAAEAAAAQAAMAAAAEAAEAAAARAAMAAAAEAAEAAAARAAQAAAAEAAEAAAASAAUAAAAEAAEAAAATAAUAAAAEAAEAAAAUAAUAAAAEAAEAAAAUAAYAAAAEAAEAAAAUAAgAAAAEAAEAAAASAAMAAAAFAAAAAAATAAQAAAAFAAEAAAASAAQAAAAEAAEAAAAUAAQAAAAEAAAAAAAVAAQAAAAEAAAAAAAUAAcAAAAEAAEAAAAVAAUAAAAEAAEAAAAVAAgAAAAEAAEAAAAVAAYAAAAEAAEAAAAMAAIAAAABAAAAAAAFAAEAAAABAAEAAAACAAcAAAABAAEAAAD//wgAAAABAAEAAAABAAYAAAABAAAAAAAOAAcAAAAIAAAAAAAEAAgAAAAIAAAAAAAJAAEAAAAJAAAAAAAKAAEAAAALAAAAAAAEAAYAAAAHAAEAAAANAAYAAAAHAAEAAAAIAP//AAAAAAQAAAAIAAAAAAAAAAUAAAAIAP7/AAAAAAQAAAAIAP3/AAAAAAQAAAAIAPz/AAAAAAMAAAAVAAcAAAAFAAEAAAATAAMAAAAIAAUAAAASAAIAAAAIAAUAAAD//wUAAAABAAYAAAAJAAUAAAAAAAgAAAALAAAAAAAIAAYAAAAQAAAAAAAFAAQAAAAQAAEAAAAFAAUAAAAQAP//AAAFAAQAAAAQAP7/AAAFAAMAAAAFAAcAAAAGAAEAAAAhAAQAAAAIAAgAAAAfAAYAAAAAAAEAAAAfAAcAAAAAAAEAAAAgAAcAAAAAAAEAAAAhAAcAAAAAAAEAAAAiAAcAAAAAAAEAAAAgAAgAAAAAAAEAAAAhAAgAAAAAAAEAAAAhAAYAAAAAAAEAAAAiAAYAAAAAAAEAAAAfAAUAAAAAAAEAAAAgAAUAAAAAAAEAAAAfAAgAAAABAAEAAAAiAAgAAAABAAEAAAAgAAYAAAABAAAAAAAhAAUAAAAAAAAAAAAiAAUAAAAAAAAAAAAfAAQAAAAAAAAAAAAgAAQAAAAAAAAAAAAjAAYAAAAAAAAAAAAkAAYAAAAAAAAAAAAlAAYAAAAAAAAAAAAmAAYAAAAAAAAAAAAnAAYAAAAAAAAAAAAoAAYAAAAAAAAAAAApAAYAAAAAAAAAAAAqAAYAAAAAAAAAAAAjAAcAAAAAAAEAAAAkAAcAAAAAAAEAAAAmAAcAAAAAAAEAAAAoAAcAAAAAAAEAAAApAAcAAAAAAAEAAAAqAAcAAAAAAAEAAAAqAAgAAAAAAAEAAAAoAAgAAAAAAAEAAAAmAAgAAAAAAAEAAAAlAAgAAAAAAAEAAAAkAAgAAAAAAAEAAAAjAAgAAAAAAAEAAAAlAAcAAAABAAEAAAAnAAgAAAABAAEAAAAnAAcAAAABAAAAAAApAAgAAAABAAAAAAAmAAQAAAADAAcAAAAmAAUAAAADAAgAAAAmAAIAAAACAAQAAAAqAAQAAAADAAcAAAAqAAUAAAADAAgAAAAqAAMAAAADAAcAAAAqAAIAAAADAAcAAAAqAAEAAAACAAQAAAAnAAUAAAAGAAYAAAAoAAUAAAABAAYAAAArAAYAAAAAAAAAAAAsAAQAAAAAAAAAAAAtAAQAAAAAAAAAAAAsAAUAAAAAAAEAAAAtAAUAAAAAAAEAAAAtAAYAAAAAAAEAAAAtAAcAAAAAAAEAAAAtAAgAAAAAAAEAAAAsAAgAAAAAAAEAAAArAAgAAAAAAAEAAAArAAcAAAAAAAEAAAAsAAYAAAABAAAAAAAsAAcAAAABAAAAAAAvAAIAAAACAAAAAAAwAAMAAAACAAEAAAAwAAIAAAACAAEAAAAxAAIAAAACAAEAAAAxAAEAAAACAAEAAAAwAAEAAAADAAAAAAAwAAAAAAACAAAAAAAxAAAAAAACAAAAAAAvAAEAAAAGAAgAAAAyAAAAAAAJAAEAAAAzAAAAAAAKAAEAAAA0AAAAAAAKAAEAAAA1AAAAAAAKAAEAAAA2AAAAAAALAAEAAAA3AAAAAAACAAAAAAA4AAAAAAACAAAAAAA3AAEAAAACAAEAAAA4AAEAAAACAAEAAAA4AAIAAAADAAAAAAA4AP7/AAAGAAQAAAA4AP//AAAGAAUAAAA4AP3/AAAGAAMAAAAuAP7/AAAEAAEAAAAsAP7/AAAEAAEAAAAsAP3/AAAEAAEAAAArAP3/AAAEAAEAAAAqAP3/AAAEAAEAAAArAPz/AAAEAAEAAAAqAPz/AAAEAAEAAAApAPz/AAAEAAEAAAAoAPz/AAAEAAEAAAAtAP7/AAAFAAEAAAApAP3/AAAFAAEAAAAoAP3/AAAFAAAAAAAoAPv/AAAEAAAAAAApAPv/AAAEAAAAAAAqAPv/AAAEAAAAAAArAPv/AAAEAAAAAAAsAPz/AAAEAAAAAAAtAP3/AAAEAAAAAAAuAP3/AAAEAAAAAAAtAPv/AAAFAAQAAAAtAPz/AAAFAAUAAAAtAPr/AAAFAAQAAAAtAPn/AAAFAAMAAAApAPr/AAAEAAgAAAAnAPz/AAAEAAEAAAAmAPz/AAAEAAEAAAAlAPz/AAAEAAEAAAAkAPz/AAAEAAEAAAAjAPz/AAAEAAEAAAAkAP3/AAAFAAEAAAAmAP3/AAAFAAAAAAAjAP3/AAAEAAEAAAAlAP3/AAAEAAEAAAAnAP3/AAAEAAEAAAAiAPr/AAAEAAEAAAAiAPv/AAAEAAEAAAAiAPz/AAAEAAEAAAAhAP3/AAAEAAEAAAAhAPz/AAAEAAEAAAAhAPr/AAAEAAEAAAAjAPv/AAAEAAAAAAAkAPv/AAAEAAAAAAAlAPv/AAAEAAAAAAAmAPv/AAAEAAAAAAAnAPv/AAAEAAAAAAAhAPj/AAAEAAAAAAAiAPj/AAAEAAAAAAAhAPn/AAAEAAEAAAAiAPn/AAAEAAEAAAAiAP3/AAAFAAEAAAAhAPv/AAAFAAAAAAAiAPX/AAAGAAMAAAAiAPb/AAAGAAQAAAAiAPf/AAAGAAUAAAAkAPr/AAAIAAMAAAAKAAUAAAAGAAAAAAAKAAYAAAAGAAEAAAA=")
tile_set = SubResource("TileSet_lbhrr") tile_set = SubResource("TileSet_lbhrr")
[node name="Player" parent="." instance=ExtResource("1_uwrxv")] [node name="Player" parent="." instance=ExtResource("1_uwrxv")]
@@ -501,3 +501,9 @@ position = Vector2(569, 97)
[node name="Slime2" parent="Enemies" instance=ExtResource("6_p57ef")] [node name="Slime2" parent="Enemies" instance=ExtResource("6_p57ef")]
position = Vector2(633, 97) position = Vector2(633, 97)
[node name="Slime3" parent="Enemies" instance=ExtResource("6_p57ef")]
position = Vector2(59, 96)
[node name="Slime4" parent="Enemies" instance=ExtResource("6_p57ef")]
position = Vector2(138, 17)

View File

@@ -1,14 +1,8 @@
[gd_scene load_steps=3 format=3 uid="uid://bmv6eq8rt7fsb"] [gd_scene load_steps=2 format=3 uid="uid://jnqii6cg0cy"]
[ext_resource type="Script" uid="uid://b3mc3t5k3yr7y" path="res://hit_box.gd" id="1_o631b"] [ext_resource type="Script" uid="uid://bdxihdbuhwdbr" path="res://scripts/hit_box.gd" id="1_o631b"]
[ext_resource type="AudioStream" uid="uid://bhayvfhydadqy" path="res://assets/sounds/tap.wav" id="2_d7xod"]
[node name="HitBox" type="Area2D"] [node name="HitBox" type="Area2D"]
collision_mask = 2
script = ExtResource("1_o631b") script = ExtResource("1_o631b")
[node name="HitSound" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource("2_d7xod")
bus = &"SFX"
[connection signal="body_entered" from="." to="." method="_on_body_entered"] [connection signal="body_entered" from="." to="." method="_on_body_entered"]

View File

@@ -1,9 +1,10 @@
[gd_scene load_steps=15 format=3 uid="uid://bvw0afyajdmht"] [gd_scene load_steps=20 format=3 uid="uid://bvw0afyajdmht"]
[ext_resource type="Script" uid="uid://cxpc8xcf3r6rg" path="res://scripts/slime.gd" id="1_n6pvg"] [ext_resource type="Script" uid="uid://cxpc8xcf3r6rg" path="res://scripts/slime.gd" id="1_n6pvg"]
[ext_resource type="Texture2D" uid="uid://do7enjpf3pftb" path="res://assets/sprites/slime_green.png" id="1_p2gj0"] [ext_resource type="Texture2D" uid="uid://do7enjpf3pftb" path="res://assets/sprites/slime_green.png" id="1_p2gj0"]
[ext_resource type="PackedScene" uid="uid://dpox5fa2pojpo" path="res://scenes/killzone.tscn" id="2_n6pvg"] [ext_resource type="PackedScene" uid="uid://dpox5fa2pojpo" path="res://scenes/killzone.tscn" id="2_n6pvg"]
[ext_resource type="PackedScene" uid="uid://bmv6eq8rt7fsb" path="res://scenes/hit_box.tscn" id="4_pjw23"] [ext_resource type="PackedScene" uid="uid://jnqii6cg0cy" path="res://scenes/hit_box.tscn" id="4_pjw23"]
[ext_resource type="AudioStream" uid="uid://bhayvfhydadqy" path="res://assets/sounds/tap.wav" id="5_2npkn"]
[sub_resource type="CircleShape2D" id="CircleShape2D_pjw23"] [sub_resource type="CircleShape2D" id="CircleShape2D_pjw23"]
radius = 5.0 radius = 5.0
@@ -24,6 +25,22 @@ region = Rect2(48, 24, 24, 24)
atlas = ExtResource("1_p2gj0") atlas = ExtResource("1_p2gj0")
region = Rect2(72, 24, 24, 24) region = Rect2(72, 24, 24, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_v5wyi"]
atlas = ExtResource("1_p2gj0")
region = Rect2(72, 0, 24, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_0l8pv"]
atlas = ExtResource("1_p2gj0")
region = Rect2(48, 0, 24, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_vnioy"]
atlas = ExtResource("1_p2gj0")
region = Rect2(24, 0, 24, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_2xjuo"]
atlas = ExtResource("1_p2gj0")
region = Rect2(0, 0, 24, 24)
[sub_resource type="SpriteFrames" id="SpriteFrames_v5wyi"] [sub_resource type="SpriteFrames" id="SpriteFrames_v5wyi"]
animations = [{ animations = [{
"frames": [{ "frames": [{
@@ -42,19 +59,193 @@ animations = [{
"loop": true, "loop": true,
"name": &"default", "name": &"default",
"speed": 7.0 "speed": 7.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_v5wyi")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0l8pv")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vnioy")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2xjuo")
}],
"loop": true,
"name": &"die",
"speed": 10.0
}] }]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_0l8pv"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_pjw23"]
size = Vector2(10, 9) size = Vector2(10, 2)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_2npkn"]
size = Vector2(8, 3)
[sub_resource type="Animation" id="Animation_pjw23"] [sub_resource type="Animation" id="Animation_pjw23"]
resource_name = "die" resource_name = "die"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("CollisionShape2D:disabled")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sounds/Death:playing")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("RayCastRight:enabled")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("RayCastLeft:enabled")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Killzone/CollisionPolygon2D:disabled")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/5/type = "bezier"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("AnimatedSprite2D:rotation")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"handle_modes": PackedInt32Array(0, 0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 1.134464, -0.083333336, -0.18907735, 0, 0),
"times": PackedFloat32Array(0, 0.26666668)
}
tracks/6/type = "method"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath(".")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(1),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"queue_free"
}]
}
[sub_resource type="Animation" id="Animation_2npkn"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("CollisionShape2D:disabled")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sounds/Death:playing")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("RayCastRight:enabled")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("RayCastLeft:enabled")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Killzone/CollisionPolygon2D:disabled")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/5/type = "bezier"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("AnimatedSprite2D:rotation")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_2npkn"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_2npkn"]
_data = { _data = {
&"RESET": SubResource("Animation_2npkn"),
&"die": SubResource("Animation_pjw23") &"die": SubResource("Animation_pjw23")
} }
@@ -68,22 +259,27 @@ position = Vector2(0, -6)
shape = SubResource("CircleShape2D_pjw23") shape = SubResource("CircleShape2D_pjw23")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
position = Vector2(0, -12) position = Vector2(0, -8.755)
sprite_frames = SubResource("SpriteFrames_v5wyi") sprite_frames = SubResource("SpriteFrames_v5wyi")
animation = &"die"
autoplay = "default" autoplay = "default"
frame_progress = 0.45857617 offset = Vector2(0, -3.285)
[node name="HitBox" parent="." node_paths=PackedStringArray("animation_player", "animated_sprite") instance=ExtResource("4_pjw23")]
collision_mask = 2
animation_player = NodePath("../AnimationPlayer")
animation_name = "die"
animated_sprite = NodePath("../AnimatedSprite2D")
animated_sprite_name = "die"
[node name="CollisionShape2D" type="CollisionShape2D" parent="HitBox"]
position = Vector2(0, -11)
shape = SubResource("RectangleShape2D_pjw23")
[node name="Killzone" parent="." instance=ExtResource("2_n6pvg")] [node name="Killzone" parent="." instance=ExtResource("2_n6pvg")]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Killzone"] [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Killzone"]
position = Vector2(0, -4.5) polygon = PackedVector2Array(-7, 0, 7, 0, 7, -4, 5, -9, -5, -9, -7, -4)
shape = SubResource("RectangleShape2D_0l8pv")
[node name="HitBox" parent="." instance=ExtResource("4_pjw23")]
[node name="CollisionShape2D" type="CollisionShape2D" parent="HitBox"]
position = Vector2(0, -11.5)
shape = SubResource("RectangleShape2D_2npkn")
[node name="RayCastRight" type="RayCast2D" parent="."] [node name="RayCastRight" type="RayCast2D" parent="."]
position = Vector2(0, -6) position = Vector2(0, -6)
@@ -98,4 +294,8 @@ libraries = {
&"": SubResource("AnimationLibrary_2npkn") &"": SubResource("AnimationLibrary_2npkn")
} }
[connection signal="killed" from="HitBox" to="." method="_on_hit_box_killed"] [node name="Sounds" type="Node" parent="."]
[node name="Death" type="AudioStreamPlayer2D" parent="Sounds"]
stream = ExtResource("5_2npkn")
bus = &"SFX"

11
scripts/hit_box.gd Normal file
View File

@@ -0,0 +1,11 @@
extends Area2D
@export var animation_player: AnimationPlayer
@export var animation_name: String
@export var animated_sprite: AnimatedSprite2D
@export var animated_sprite_name: String
func _on_body_entered(_body: Node2D) -> void:
animated_sprite.play(animated_sprite_name)
animation_player.play(animation_name)

1
scripts/hit_box.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://bdxihdbuhwdbr

View File

@@ -25,7 +25,3 @@ func _physics_process(delta: float) -> void:
position.x += direction * speed * delta position.x += direction * speed * delta
move_and_slide() move_and_slide()
func _on_hit_box_killed() -> void:
queue_free()