diff --git a/DungeonShooting_Godot/prefab/role/Role0001.tscn b/DungeonShooting_Godot/prefab/role/Role0001.tscn
index 11cf968..afa4f42 100644
--- a/DungeonShooting_Godot/prefab/role/Role0001.tscn
+++ b/DungeonShooting_Godot/prefab/role/Role0001.tscn
@@ -47,7 +47,7 @@
[node name="AnimatedSprite" parent="." index="2"]
material = SubResource("ShaderMaterial_8hgu2")
sprite_frames = ExtResource("4_galcc")
-animation = &"roll"
+animation = &"die"
[node name="Collision" parent="." index="3"]
position = Vector2(0, 0)
diff --git a/DungeonShooting_Godot/prefab/role/enemy/Enemy0003.tscn b/DungeonShooting_Godot/prefab/role/enemy/Enemy0003.tscn
new file mode 100644
index 0000000..78ac185
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/role/enemy/Enemy0003.tscn
@@ -0,0 +1,86 @@
+[gd_scene load_steps=13 format=3 uid="uid://87kfirk3fugd"]
+
+[ext_resource type="PackedScene" uid="uid://dbrig6dq441wo" path="res://prefab/role/template/AiTemplate.tscn" id="1_34027"]
+[ext_resource type="Script" path="res://src/game/activity/role/enemy/Enemy.cs" id="2_pakvr"]
+[ext_resource type="Shader" path="res://resource/shader/Blend.gdshader" id="3_egkdu"]
+[ext_resource type="SpriteFrames" uid="uid://cnk1wmk3uy4aa" path="res://resource/spriteFrames/role/Enemy0003.tres" id="4_sd22a"]
+[ext_resource type="Animation" uid="uid://b4mgiysicdk2b" path="res://resource/animation/enemy/Enemy_reset.res" id="5_5area"]
+[ext_resource type="Animation" uid="uid://gvkkxspcdwrp" path="res://resource/animation/enemy/Enemy_astonished.res" id="6_o4vh5"]
+[ext_resource type="Animation" uid="uid://16rxpnsgj5tl" path="res://resource/animation/enemy/Enemy_notify.res" id="7_y8dcl"]
+[ext_resource type="Animation" uid="uid://cmje7jsgrhgmx" path="res://resource/animation/enemy/Enemy_query.res" id="8_7j8ux"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_3nkur"]
+resource_local_to_scene = true
+shader = ExtResource("3_egkdu")
+shader_parameter/blend = Color(0, 0, 0, 0.470588)
+shader_parameter/schedule = 1.0
+shader_parameter/modulate = Color(1, 1, 1, 1)
+shader_parameter/show_outline = true
+shader_parameter/outline_color = Color(0, 0, 0, 1)
+shader_parameter/outline_rainbow = false
+shader_parameter/outline_use_blend = true
+shader_parameter/grey = 0.0
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_2kup1"]
+resource_local_to_scene = true
+shader = ExtResource("3_egkdu")
+shader_parameter/blend = Color(1, 1, 1, 1)
+shader_parameter/schedule = 0.0
+shader_parameter/modulate = Color(1, 1, 1, 1)
+shader_parameter/show_outline = true
+shader_parameter/outline_color = Color(0, 0, 0, 1)
+shader_parameter/outline_rainbow = false
+shader_parameter/outline_use_blend = true
+shader_parameter/grey = 0.0
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_rkrey"]
+size = Vector2(12, 18)
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_ur1ug"]
+_data = {
+"RESET": ExtResource("5_5area"),
+"astonished": ExtResource("6_o4vh5"),
+"notify": ExtResource("7_y8dcl"),
+"query": ExtResource("8_7j8ux")
+}
+
+[node name="Enemy0003" node_paths=PackedStringArray("ViewRay", "NavigationAgent2D", "NavigationPoint", "FirePoint", "ViewArea", "ViewAreaCollision", "HurtArea", "HurtCollision", "InteractiveArea", "InteractiveCollision", "TipRoot", "TipSprite", "AnimationPlayer", "MountPoint", "BackMountPoint", "MeleeAttackArea", "MeleeAttackCollision", "ShadowSprite", "AnimatedSprite", "Collision") instance=ExtResource("1_34027")]
+script = ExtResource("2_pakvr")
+ViewRay = NodePath("ViewRay")
+NavigationAgent2D = NodePath("NavigationPoint/NavigationAgent2D")
+NavigationPoint = NodePath("NavigationPoint")
+FirePoint = NodePath("FirePoint")
+ViewArea = NodePath("MountPoint/ViewArea")
+ViewAreaCollision = NodePath("MountPoint/ViewArea/ViewAreaCollision")
+HurtArea = NodePath("HurtArea")
+HurtCollision = NodePath("HurtArea/HurtCollision")
+InteractiveArea = NodePath("InteractiveArea")
+InteractiveCollision = NodePath("InteractiveArea/InteractiveCollision")
+TipRoot = NodePath("TipRoot")
+TipSprite = NodePath("TipRoot/TipSprite")
+AnimationPlayer = NodePath("AnimationPlayer")
+MountPoint = NodePath("MountPoint")
+BackMountPoint = NodePath("BackMountPoint")
+MeleeAttackArea = NodePath("MountPoint/MeleeAttackArea")
+MeleeAttackCollision = NodePath("MountPoint/MeleeAttackArea/MeleeAttackCollision")
+ShadowSprite = NodePath("ShadowSprite")
+AnimatedSprite = NodePath("AnimatedSprite")
+Collision = NodePath("Collision")
+
+[node name="ShadowSprite" parent="." index="0"]
+material = SubResource("ShaderMaterial_3nkur")
+
+[node name="AnimatedSprite" parent="." index="2"]
+material = SubResource("ShaderMaterial_2kup1")
+sprite_frames = ExtResource("4_sd22a")
+
+[node name="HurtCollision" parent="HurtArea" index="0"]
+shape = SubResource("RectangleShape2D_rkrey")
+
+[node name="FirePoint" parent="." index="8"]
+position = Vector2(2, -9)
+
+[node name="AnimationPlayer" parent="." index="11"]
+libraries = {
+"": SubResource("AnimationLibrary_ur1ug")
+}
diff --git a/DungeonShooting_Godot/resource/material/BleB865.tmp b/DungeonShooting_Godot/resource/material/BleB865.tmp
deleted file mode 100644
index a40db2f..0000000
--- a/DungeonShooting_Godot/resource/material/BleB865.tmp
+++ /dev/null
@@ -1,51 +0,0 @@
-shader_type canvas_item;
-
-//混合颜色
-uniform vec4 blend : source_color = vec4(1.0, 1.0, 1.0, 1.0);
-//混合度
-uniform float schedule : hint_range(0.0, 1.0) = 0.0;
-//透明度
-//uniform float alpha : hint_range(0.0, 1.0) = 1.0;
-uniform vec4 modulate : source_color = vec4(1.0, 1.0, 1.0, 1.0);
-
-//------------------ 轮廓相关 --------------
-uniform bool show_outline = true;
-//轮廓颜色
-uniform vec4 outline_color : source_color = vec4(0.0, 0.0, 0.0, 1.0);
-//是否是彩虹轮廓
-uniform bool outline_rainbow = false;
-//彩虹轮廓变化周期
-const float frequency = 0.25;
-const float light_offset = 0.5;
-
-void fragment() {
- //显示轮廓
- if (show_outline) {
- vec2 size = TEXTURE_PIXEL_SIZE;
- float outline;
- outline = texture(TEXTURE, UV + vec2(-size.x, 0)).a;
- outline += texture(TEXTURE, UV + vec2(0, size.y)).a;
- outline += texture(TEXTURE, UV + vec2(size.x, 0)).a;
- outline += texture(TEXTURE, UV + vec2(0, -size.y)).a;
- outline = min(outline, 1.0);
-
- vec4 animated_line_color = vec4(
- light_offset + sin(2.0 * 3.14 * frequency * TIME),
- light_offset + sin(2.0 * 3.14 * frequency * TIME + radians(120.0)),
- light_offset + sin(2.0 * 3.14 * frequency * TIME + radians(240.0)),
- 1.0
- );
-
- vec4 color = texture(TEXTURE, UV);
- if (outline_rainbow){
- COLOR = mix(color, animated_line_color, outline - color.a);
- } else {
- COLOR = mix(color, outline_color , outline - color.a);
- }
- }
-
- vec4 col = mix(COLOR, blend, schedule);
- col = mix(vec4(0.0, 0.0, 0.0, 0.0), col, COLOR.a);
- col *= modulate;
- COLOR = col;
-}
diff --git a/DungeonShooting_Godot/resource/material/BleFA6E.tmp b/DungeonShooting_Godot/resource/material/BleFA6E.tmp
deleted file mode 100644
index a40db2f..0000000
--- a/DungeonShooting_Godot/resource/material/BleFA6E.tmp
+++ /dev/null
@@ -1,51 +0,0 @@
-shader_type canvas_item;
-
-//混合颜色
-uniform vec4 blend : source_color = vec4(1.0, 1.0, 1.0, 1.0);
-//混合度
-uniform float schedule : hint_range(0.0, 1.0) = 0.0;
-//透明度
-//uniform float alpha : hint_range(0.0, 1.0) = 1.0;
-uniform vec4 modulate : source_color = vec4(1.0, 1.0, 1.0, 1.0);
-
-//------------------ 轮廓相关 --------------
-uniform bool show_outline = true;
-//轮廓颜色
-uniform vec4 outline_color : source_color = vec4(0.0, 0.0, 0.0, 1.0);
-//是否是彩虹轮廓
-uniform bool outline_rainbow = false;
-//彩虹轮廓变化周期
-const float frequency = 0.25;
-const float light_offset = 0.5;
-
-void fragment() {
- //显示轮廓
- if (show_outline) {
- vec2 size = TEXTURE_PIXEL_SIZE;
- float outline;
- outline = texture(TEXTURE, UV + vec2(-size.x, 0)).a;
- outline += texture(TEXTURE, UV + vec2(0, size.y)).a;
- outline += texture(TEXTURE, UV + vec2(size.x, 0)).a;
- outline += texture(TEXTURE, UV + vec2(0, -size.y)).a;
- outline = min(outline, 1.0);
-
- vec4 animated_line_color = vec4(
- light_offset + sin(2.0 * 3.14 * frequency * TIME),
- light_offset + sin(2.0 * 3.14 * frequency * TIME + radians(120.0)),
- light_offset + sin(2.0 * 3.14 * frequency * TIME + radians(240.0)),
- 1.0
- );
-
- vec4 color = texture(TEXTURE, UV);
- if (outline_rainbow){
- COLOR = mix(color, animated_line_color, outline - color.a);
- } else {
- COLOR = mix(color, outline_color , outline - color.a);
- }
- }
-
- vec4 col = mix(COLOR, blend, schedule);
- col = mix(vec4(0.0, 0.0, 0.0, 0.0), col, COLOR.a);
- col *= modulate;
- COLOR = col;
-}
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003.png b/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003.png
new file mode 100644
index 0000000..56d00a6
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003.png.import
new file mode 100644
index 0000000..23761ad
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cdf1al6kpv3ta"
+path="res://.godot/imported/enemy0003.png-2aff5a98bb5dd4db23d6f75b0e990221.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/enemy0003/enemy0003.png"
+dest_files=["res://.godot/imported/enemy0003.png-2aff5a98bb5dd4db23d6f75b0e990221.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003_Debris.png b/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003_Debris.png
new file mode 100644
index 0000000..0c428a8
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003_Debris.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003_Debris.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003_Debris.png.import
new file mode 100644
index 0000000..82f98bd
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003_Debris.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dj68fnvd2qrm4"
+path="res://.godot/imported/enemy0003_Debris.png-0d49499ec67ee7fedfebc509ec159ea0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/enemy0003/enemy0003_Debris.png"
+dest_files=["res://.godot/imported/enemy0003_Debris.png-0d49499ec67ee7fedfebc509ec159ea0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003_Icon.png b/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003_Icon.png
new file mode 100644
index 0000000..ef31ab5
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003_Icon.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003_Icon.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003_Icon.png.import
new file mode 100644
index 0000000..6ae8808
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0003/enemy0003_Icon.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d0n3ncp68nnk6"
+path="res://.godot/imported/enemy0003_Icon.png-b9629b2c5194b2a54d5cd4d819d3b505.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/enemy0003/enemy0003_Icon.png"
+dest_files=["res://.godot/imported/enemy0003_Icon.png-b9629b2c5194b2a54d5cd4d819d3b505.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004.png b/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004.png
new file mode 100644
index 0000000..81348f6
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004.png.import
new file mode 100644
index 0000000..50561a7
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://digotsm6pux62"
+path="res://.godot/imported/enemy0004.png-48437bd7fc483bcc9164f9278838c427.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/enemy0004/enemy0004.png"
+dest_files=["res://.godot/imported/enemy0004.png-48437bd7fc483bcc9164f9278838c427.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004_Debris.png b/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004_Debris.png
new file mode 100644
index 0000000..b531577
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004_Debris.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004_Debris.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004_Debris.png.import
new file mode 100644
index 0000000..2fc93e2
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004_Debris.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://v63ex2nsmve8"
+path="res://.godot/imported/enemy0004_Debris.png-8490ea147f0c0301c8ff1081373d661a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/enemy0004/enemy0004_Debris.png"
+dest_files=["res://.godot/imported/enemy0004_Debris.png-8490ea147f0c0301c8ff1081373d661a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004_Icon.png b/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004_Icon.png
new file mode 100644
index 0000000..73333fe
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004_Icon.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004_Icon.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004_Icon.png.import
new file mode 100644
index 0000000..e91bc90
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0004/enemy0004_Icon.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dbw81vt8cv47a"
+path="res://.godot/imported/enemy0004_Icon.png-afab614bd8c989b6254232cbe479a533.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/enemy0004/enemy0004_Icon.png"
+dest_files=["res://.godot/imported/enemy0004_Icon.png-afab614bd8c989b6254232cbe479a533.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005.png b/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005.png
new file mode 100644
index 0000000..6162fc8
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005.png.import
new file mode 100644
index 0000000..cf72c61
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://5tge3befo7le"
+path="res://.godot/imported/enemy0005.png-e2e97973c857a4e2da0bd848aff0b022.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/enemy0005/enemy0005.png"
+dest_files=["res://.godot/imported/enemy0005.png-e2e97973c857a4e2da0bd848aff0b022.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005_Debris.png b/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005_Debris.png
new file mode 100644
index 0000000..8675634
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005_Debris.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005_Debris.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005_Debris.png.import
new file mode 100644
index 0000000..bcdda13
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005_Debris.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dw4jvgt7iwi2d"
+path="res://.godot/imported/enemy0005_Debris.png-8cdee7278caf6047bdf1b37bc055bc6e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/enemy0005/enemy0005_Debris.png"
+dest_files=["res://.godot/imported/enemy0005_Debris.png-8cdee7278caf6047bdf1b37bc055bc6e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005_Icon.png b/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005_Icon.png
new file mode 100644
index 0000000..c1dd6d1
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005_Icon.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005_Icon.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005_Icon.png.import
new file mode 100644
index 0000000..be68958
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0005/enemy0005_Icon.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://mvpyaurvr278"
+path="res://.godot/imported/enemy0005_Icon.png-6c35e6f3e277f42cce227ff83451f989.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/enemy0005/enemy0005_Icon.png"
+dest_files=["res://.godot/imported/enemy0005_Icon.png-6c35e6f3e277f42cce227ff83451f989.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0006/enemy0005.png b/DungeonShooting_Godot/resource/sprite/role/enemy0006/enemy0005.png
new file mode 100644
index 0000000..e299d9e
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0006/enemy0005.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0006/enemy0005.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy0006/enemy0005.png.import
new file mode 100644
index 0000000..0735258
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0006/enemy0005.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cdin8mr0sj5v0"
+path="res://.godot/imported/enemy0005.png-d7d5d324302d03139b72cada5c03b905.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/enemy0006/enemy0005.png"
+dest_files=["res://.godot/imported/enemy0005.png-d7d5d324302d03139b72cada5c03b905.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0006/enemy005.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy0006/enemy005.png.import
new file mode 100644
index 0000000..542466b
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0006/enemy005.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bpujly44rboun"
+path="res://.godot/imported/enemy005.png-6312988475feeb1cbcc99baeb7ad3e72.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/enemy005/enemy005.png"
+dest_files=["res://.godot/imported/enemy005.png-6312988475feeb1cbcc99baeb7ad3e72.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy0002_Debris.png b/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy0002_Debris.png
deleted file mode 100644
index 0c428a8..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy0002_Debris.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy0002_Debris.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy0002_Debris.png.import
deleted file mode 100644
index eb9fba6..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy0002_Debris.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bf7pd4t5qf41"
-path="res://.godot/imported/enemy0002_Debris.png-dba5b9e1a44c0c4607b398d6a4ad1f6b.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/role/enemy002/enemy0002_Debris.png"
-dest_files=["res://.godot/imported/enemy0002_Debris.png-dba5b9e1a44c0c4607b398d6a4ad1f6b.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy0002_Icon.png b/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy0002_Icon.png
deleted file mode 100644
index ef31ab5..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy0002_Icon.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy0002_Icon.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy0002_Icon.png.import
deleted file mode 100644
index d6eb325..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy0002_Icon.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://b20uscfsk47o5"
-path="res://.godot/imported/enemy0002_Icon.png-b53f87074dd0d6e7ec829630c12aed3b.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/role/enemy002/enemy0002_Icon.png"
-dest_files=["res://.godot/imported/enemy0002_Icon.png-b53f87074dd0d6e7ec829630c12aed3b.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy002.png b/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy002.png
deleted file mode 100644
index 56d00a6..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy002.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy002.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy002.png.import
deleted file mode 100644
index 78596ce..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy002/enemy002.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://c133a7elsjedc"
-path="res://.godot/imported/enemy002.png-31ab39c6db5ef9c63253e2a46071bc80.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/role/enemy002/enemy002.png"
-dest_files=["res://.godot/imported/enemy002.png-31ab39c6db5ef9c63253e2a46071bc80.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy002/role3.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy002/role3.png.import
deleted file mode 100644
index f035be1..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy002/role3.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cd47r554va1h2"
-path="res://.godot/imported/role3.png-03fa3f4e21f02035205dd8b89a4b74a0.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/role/role3.png"
-dest_files=["res://.godot/imported/role3.png-03fa3f4e21f02035205dd8b89a4b74a0.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy0002_Debris.png b/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy0002_Debris.png
deleted file mode 100644
index b531577..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy0002_Debris.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy0002_Debris.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy0002_Debris.png.import
deleted file mode 100644
index f9e52b7..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy0002_Debris.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dbbyyfituaef1"
-path="res://.godot/imported/enemy0002_Debris.png-98d3289fe562ce71a2f03eae55431604.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/role/enemy003/enemy0002_Debris.png"
-dest_files=["res://.godot/imported/enemy0002_Debris.png-98d3289fe562ce71a2f03eae55431604.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy0002_Icon.png b/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy0002_Icon.png
deleted file mode 100644
index 73333fe..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy0002_Icon.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy0002_Icon.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy0002_Icon.png.import
deleted file mode 100644
index a2a85ec..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy0002_Icon.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dn3y80mi8fw16"
-path="res://.godot/imported/enemy0002_Icon.png-ef381e4281ee7852711ffa5942ec9b89.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/role/enemy003/enemy0002_Icon.png"
-dest_files=["res://.godot/imported/enemy0002_Icon.png-ef381e4281ee7852711ffa5942ec9b89.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy003.png b/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy003.png
deleted file mode 100644
index 81348f6..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy003.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy003.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy003.png.import
deleted file mode 100644
index 07635f5..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy003/enemy003.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://b56d4da0bra6e"
-path="res://.godot/imported/enemy003.png-4d0a2901f3c5768b88cdbcb2314c3290.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/role/enemy003/enemy003.png"
-dest_files=["res://.godot/imported/enemy003.png-4d0a2901f3c5768b88cdbcb2314c3290.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy0004_Debris.png b/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy0004_Debris.png
deleted file mode 100644
index 8675634..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy0004_Debris.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy0004_Debris.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy0004_Debris.png.import
deleted file mode 100644
index 9fbb98d..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy0004_Debris.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://c5wwwotumy7wo"
-path="res://.godot/imported/enemy0004_Debris.png-502689251ad6d860c299fabd91873cc5.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/role/enemy004/enemy0004_Debris.png"
-dest_files=["res://.godot/imported/enemy0004_Debris.png-502689251ad6d860c299fabd91873cc5.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy0004_Icon.png b/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy0004_Icon.png
deleted file mode 100644
index c1dd6d1..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy0004_Icon.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy0004_Icon.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy0004_Icon.png.import
deleted file mode 100644
index 6109ed6..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy0004_Icon.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://vhlxx2npduje"
-path="res://.godot/imported/enemy0004_Icon.png-8f67c32ca3dbbe19d435a136d19df109.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/role/enemy004/enemy0004_Icon.png"
-dest_files=["res://.godot/imported/enemy0004_Icon.png-8f67c32ca3dbbe19d435a136d19df109.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy004.png b/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy004.png
deleted file mode 100644
index 6162fc8..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy004.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy004.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy004.png.import
deleted file mode 100644
index b4cf96f..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy004/enemy004.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bhwhhg2dfsr26"
-path="res://.godot/imported/Role0001.png-a280ed1e3e1104599514e71a50bb47f4.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/role/enemy004/Role0001.png"
-dest_files=["res://.godot/imported/Role0001.png-a280ed1e3e1104599514e71a50bb47f4.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy005/enemy005.png b/DungeonShooting_Godot/resource/sprite/role/enemy005/enemy005.png
deleted file mode 100644
index e299d9e..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy005/enemy005.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy005/enemy005.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy005/enemy005.png.import
deleted file mode 100644
index 542466b..0000000
--- a/DungeonShooting_Godot/resource/sprite/role/enemy005/enemy005.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bpujly44rboun"
-path="res://.godot/imported/enemy005.png-6312988475feeb1cbcc99baeb7ad3e72.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/role/enemy005/enemy005.png"
-dest_files=["res://.godot/imported/enemy005.png-6312988475feeb1cbcc99baeb7ad3e72.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/spriteFrames/role/Enemy0003.tres b/DungeonShooting_Godot/resource/spriteFrames/role/Enemy0003.tres
new file mode 100644
index 0000000..935369a
--- /dev/null
+++ b/DungeonShooting_Godot/resource/spriteFrames/role/Enemy0003.tres
@@ -0,0 +1,114 @@
+[gd_resource type="SpriteFrames" load_steps=15 format=3 uid="uid://cnk1wmk3uy4aa"]
+
+[ext_resource type="Texture2D" uid="uid://d0n3ncp68nnk6" path="res://resource/sprite/role/enemy0003/enemy0003_Icon.png" id="1_4n7kk"]
+[ext_resource type="Texture2D" uid="uid://cdf1al6kpv3ta" path="res://resource/sprite/role/enemy0003/enemy0003.png" id="2_gvc60"]
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_fiqik"]
+atlas = ExtResource("2_gvc60")
+region = Rect2(0, 24, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_algye"]
+atlas = ExtResource("2_gvc60")
+region = Rect2(16, 24, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_rovd5"]
+atlas = ExtResource("2_gvc60")
+region = Rect2(32, 24, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_k7bjp"]
+atlas = ExtResource("2_gvc60")
+region = Rect2(48, 24, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_yyuaf"]
+atlas = ExtResource("2_gvc60")
+region = Rect2(48, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ijjls"]
+atlas = ExtResource("2_gvc60")
+region = Rect2(32, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_e2uc8"]
+atlas = ExtResource("2_gvc60")
+region = Rect2(16, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_id4xp"]
+atlas = ExtResource("2_gvc60")
+region = Rect2(0, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_hof3c"]
+atlas = ExtResource("2_gvc60")
+region = Rect2(0, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_3n1od"]
+atlas = ExtResource("2_gvc60")
+region = Rect2(16, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_3jmh0"]
+atlas = ExtResource("2_gvc60")
+region = Rect2(32, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ddpq5"]
+atlas = ExtResource("2_gvc60")
+region = Rect2(48, 48, 16, 24)
+
+[resource]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("1_4n7kk")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_fiqik")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_algye")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_rovd5")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_k7bjp")
+}],
+"loop": true,
+"name": &"idle",
+"speed": 7.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_yyuaf")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ijjls")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_e2uc8")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_id4xp")
+}],
+"loop": true,
+"name": &"reverseRun",
+"speed": 10.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_hof3c")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_3n1od")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_3jmh0")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ddpq5")
+}],
+"loop": true,
+"name": &"run",
+"speed": 10.0
+}]
diff --git a/DungeonShooting_Godot/resource/spriteFrames/role/Role0001.tres b/DungeonShooting_Godot/resource/spriteFrames/role/Role0001.tres
index 99a459a..acc4ab3 100644
--- a/DungeonShooting_Godot/resource/spriteFrames/role/Role0001.tres
+++ b/DungeonShooting_Godot/resource/spriteFrames/role/Role0001.tres
@@ -1,19 +1,27 @@
-[gd_resource type="SpriteFrames" load_steps=26 format=3 uid="uid://n11thtali6es"]
+[gd_resource type="SpriteFrames" load_steps=48 format=3 uid="uid://n11thtali6es"]
[ext_resource type="Texture2D" uid="uid://ekas4lqprrml" path="res://resource/sprite/role/role0001/idle/Sprite-0002.png" id="1_le6bk"]
+[ext_resource type="Texture2D" uid="uid://d2tl87f4vgcl4" path="res://resource/sprite/role/role0001/dle/Sprite-0002-Sheet-export.png" id="2_8n6o4"]
[ext_resource type="Texture2D" uid="uid://b81k08ofpf2oo" path="res://resource/sprite/role/role0001/idle/Sprite-0003.png" id="2_whsc2"]
[ext_resource type="Texture2D" uid="uid://obelhor4gdmh" path="res://resource/sprite/role/role0001/idle/Sprite-0004.png" id="3_peq88"]
[ext_resource type="Texture2D" uid="uid://dvv73cbc818e4" path="res://resource/sprite/role/role0001/idle/Sprite-0005.png" id="4_arikg"]
[ext_resource type="Texture2D" uid="uid://dfom06raof2fw" path="res://resource/sprite/role/role0001/idle/Sprite-0006.png" id="5_0bq3k"]
[ext_resource type="Texture2D" uid="uid://c7dsfoaupj4qo" path="res://resource/sprite/role/role0001/idle/Sprite-0007.png" id="6_hw6v8"]
[ext_resource type="Texture2D" uid="uid://cwrsm1ui33d6b" path="res://resource/sprite/role/role0001/idle/Sprite-0008.png" id="7_heo28"]
-[ext_resource type="Texture2D" uid="uid://clqgeyii6lkm6" path="res://resource/sprite/role/role0001/run/Sprite-0008.png" id="8_scwvl"]
-[ext_resource type="Texture2D" uid="uid://dfxsecrlc85pi" path="res://resource/sprite/role/role0001/run/Sprite-0007.png" id="9_yjs5f"]
-[ext_resource type="Texture2D" uid="uid://de24cv2v45gkf" path="res://resource/sprite/role/role0001/run/Sprite-0006.png" id="10_uafyp"]
-[ext_resource type="Texture2D" uid="uid://pqn660nyk82t" path="res://resource/sprite/role/role0001/run/Sprite-0005.png" id="11_ndgr1"]
-[ext_resource type="Texture2D" uid="uid://d32g0f5vk68sj" path="res://resource/sprite/role/role0001/run/Sprite-0004.png" id="12_cbabh"]
-[ext_resource type="Texture2D" uid="uid://cw83liyy6gnln" path="res://resource/sprite/role/role0001/run/Sprite-0003.png" id="13_u0cmp"]
-[ext_resource type="Texture2D" uid="uid://b1gh481w2xvsl" path="res://resource/sprite/role/role0001/run/Sprite-0002.png" id="14_nlfq5"]
+[ext_resource type="Texture2D" uid="uid://clqgeyii6lkm6" path="res://resource/sprite/role/role0001/before/Sprite-0008.png" id="8_scwvl"]
+[ext_resource type="Texture2D" uid="uid://cbx2rqaka0ocs" path="res://resource/sprite/role/role0001/backward/Sprite-0002.png" id="9_xjn7y"]
+[ext_resource type="Texture2D" uid="uid://dfxsecrlc85pi" path="res://resource/sprite/role/role0001/before/Sprite-0007.png" id="9_yjs5f"]
+[ext_resource type="Texture2D" uid="uid://de24cv2v45gkf" path="res://resource/sprite/role/role0001/before/Sprite-0006.png" id="10_uafyp"]
+[ext_resource type="Texture2D" uid="uid://0gyjuaeqcqa4" path="res://resource/sprite/role/role0001/backward/Sprite-0003.png" id="10_y65up"]
+[ext_resource type="Texture2D" uid="uid://bdf273admb6w" path="res://resource/sprite/role/role0001/backward/Sprite-0004.png" id="11_n5cgn"]
+[ext_resource type="Texture2D" uid="uid://pqn660nyk82t" path="res://resource/sprite/role/role0001/before/Sprite-0005.png" id="11_ndgr1"]
+[ext_resource type="Texture2D" uid="uid://d32g0f5vk68sj" path="res://resource/sprite/role/role0001/before/Sprite-0004.png" id="12_cbabh"]
+[ext_resource type="Texture2D" uid="uid://p8h28jechawi" path="res://resource/sprite/role/role0001/backward/Sprite-0005.png" id="12_v4tvy"]
+[ext_resource type="Texture2D" uid="uid://c6x4qn8r7k1yr" path="res://resource/sprite/role/role0001/backward/Sprite-0006.png" id="13_a6idy"]
+[ext_resource type="Texture2D" uid="uid://cw83liyy6gnln" path="res://resource/sprite/role/role0001/before/Sprite-0003.png" id="13_u0cmp"]
+[ext_resource type="Texture2D" uid="uid://c7wx2h6ra4eyn" path="res://resource/sprite/role/role0001/backward/Sprite-0007.png" id="14_8wkl8"]
+[ext_resource type="Texture2D" uid="uid://b1gh481w2xvsl" path="res://resource/sprite/role/role0001/before/Sprite-0002.png" id="14_nlfq5"]
+[ext_resource type="Texture2D" uid="uid://dt0ocjl0doowp" path="res://resource/sprite/role/role0001/backward/Sprite-0008.png" id="15_8065h"]
[ext_resource type="Texture2D" uid="uid://do6ybmo0r04pp" path="res://resource/sprite/role/role0001/roll/Sprite-0010.png" id="17_e31g7"]
[ext_resource type="Texture2D" uid="uid://b3itgraiw7mns" path="res://resource/sprite/role/role0001/roll/Sprite-0011.png" id="18_g0o3y"]
[ext_resource type="Texture2D" uid="uid://cisayo3amq6sv" path="res://resource/sprite/role/role0001/roll/Sprite-0012.png" id="19_s6xfs"]
@@ -26,6 +34,62 @@
[ext_resource type="Texture2D" uid="uid://b7s4yf5ic37cd" path="res://resource/sprite/role/role0001/roll/Sprite-0017.png" id="24_83arr"]
[ext_resource type="Texture2D" uid="uid://c0ik1lwfjlr7y" path="res://resource/sprite/role/role0001/roll/Sprite-0018.png" id="25_6hy4b"]
+[sub_resource type="AtlasTexture" id="AtlasTexture_u4d02"]
+atlas = ExtResource("2_8n6o4")
+region = Rect2(0, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_pnh1y"]
+atlas = ExtResource("2_8n6o4")
+region = Rect2(48, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_gtiys"]
+atlas = ExtResource("2_8n6o4")
+region = Rect2(96, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_o720b"]
+atlas = ExtResource("2_8n6o4")
+region = Rect2(144, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_1ot4k"]
+atlas = ExtResource("2_8n6o4")
+region = Rect2(192, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_nbogm"]
+atlas = ExtResource("2_8n6o4")
+region = Rect2(240, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_xb60w"]
+atlas = ExtResource("2_8n6o4")
+region = Rect2(288, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_0n8c4"]
+atlas = ExtResource("2_8n6o4")
+region = Rect2(336, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_2cgpn"]
+atlas = ExtResource("2_8n6o4")
+region = Rect2(384, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_mgacx"]
+atlas = ExtResource("2_8n6o4")
+region = Rect2(432, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ssyna"]
+atlas = ExtResource("2_8n6o4")
+region = Rect2(480, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_871m0"]
+atlas = ExtResource("2_8n6o4")
+region = Rect2(528, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_kpc6c"]
+atlas = ExtResource("2_8n6o4")
+region = Rect2(576, 0, 48, 48)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_icnau"]
+atlas = ExtResource("2_8n6o4")
+region = Rect2(624, 0, 48, 48)
+
[resource]
animations = [{
"frames": [{
@@ -38,6 +102,59 @@
}, {
"frames": [{
"duration": 1.0,
+"texture": SubResource("AtlasTexture_u4d02")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_pnh1y")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_gtiys")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_o720b")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_1ot4k")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_nbogm")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_xb60w")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_0n8c4")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_2cgpn")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_mgacx")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ssyna")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_871m0")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_kpc6c")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_icnau")
+}, {
+"duration": 1.0,
+"texture": null
+}, {
+"duration": 1.0,
+"texture": null
+}],
+"loop": false,
+"name": &"die",
+"speed": 13.0
+}, {
+"frames": [{
+"duration": 1.0,
"texture": ExtResource("1_le6bk")
}, {
"duration": 1.0,
@@ -64,25 +181,25 @@
}, {
"frames": [{
"duration": 1.0,
-"texture": ExtResource("9_yjs5f")
+"texture": ExtResource("9_xjn7y")
}, {
"duration": 1.0,
-"texture": ExtResource("10_uafyp")
+"texture": ExtResource("10_y65up")
}, {
"duration": 1.0,
-"texture": ExtResource("11_ndgr1")
+"texture": ExtResource("11_n5cgn")
}, {
"duration": 1.0,
-"texture": ExtResource("12_cbabh")
+"texture": ExtResource("12_v4tvy")
}, {
"duration": 1.0,
-"texture": ExtResource("13_u0cmp")
+"texture": ExtResource("13_a6idy")
}, {
"duration": 1.0,
-"texture": ExtResource("14_nlfq5")
+"texture": ExtResource("14_8wkl8")
}, {
"duration": 1.0,
-"texture": ExtResource("8_scwvl")
+"texture": ExtResource("15_8065h")
}],
"loop": true,
"name": &"reverseRun",
diff --git a/DungeonShooting_Godot/src/framework/activity/components/IStateController.cs b/DungeonShooting_Godot/src/framework/activity/components/IStateController.cs
new file mode 100644
index 0000000..5fb7c0f
--- /dev/null
+++ b/DungeonShooting_Godot/src/framework/activity/components/IStateController.cs
@@ -0,0 +1,8 @@
+
+///
+/// 状态控制器接口
+///
+public interface IStateController
+{
+
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/activity/components/StateController.cs b/DungeonShooting_Godot/src/framework/activity/components/StateController.cs
index 942dd5f..5c86eb0 100644
--- a/DungeonShooting_Godot/src/framework/activity/components/StateController.cs
+++ b/DungeonShooting_Godot/src/framework/activity/components/StateController.cs
@@ -5,7 +5,7 @@
///
/// 对象状态机控制器
///
-public class StateController : Component where T : ActivityObject where S : Enum
+public class StateController : Component, IStateController where T : ActivityObject where S : Enum
{
///
/// 获取当前状态
diff --git a/DungeonShooting_Godot/src/game/activity/role/Role.cs b/DungeonShooting_Godot/src/game/activity/role/Role.cs
index 7b36d4d..27c7d34 100644
--- a/DungeonShooting_Godot/src/game/activity/role/Role.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/Role.cs
@@ -824,7 +824,6 @@
return null;
}
-
///
/// 触发使用道具
///
@@ -845,8 +844,8 @@
/// 伤害角度(弧度制)
public virtual void HurtHandler(ActivityObject target, int damage, float angle)
{
- //受伤闪烁, 无敌状态
- if (Invincible)
+ //受伤闪烁, 无敌状态, 或者已经死亡
+ if (Invincible || IsDie)
{
return;
}
@@ -893,13 +892,53 @@
if (!IsDie)
{
IsDie = true;
- OnDie();
- //死亡事件
- World.OnRoleDie(this);
+
+ //禁用状态机控制器
+ var stateController = GetComponent(typeof(IStateController));
+ if (stateController != null)
+ {
+ stateController.Enable = false;
+ }
+
+ //播放死亡动画
+ if (AnimationPlayer.HasAnimation(AnimatorNames.Die))
+ {
+ StartCoroutine(DoDieWithAnimationPlayer());
+ }
+ else if (AnimatedSprite.SpriteFrames.HasAnimation(AnimatorNames.Die))
+ {
+ StartCoroutine(DoDieWithAnimatedSprite());
+ }
+ else
+ {
+ DoDieHandler();
+ }
}
}
}
+ private IEnumerator DoDieWithAnimationPlayer()
+ {
+ AnimationPlayer.Play(AnimatorNames.Die);
+ yield return ToSignal(AnimationPlayer, AnimationMixer.SignalName.AnimationFinished);
+ DoDieHandler();
+ }
+
+ private IEnumerator DoDieWithAnimatedSprite()
+ {
+ AnimatedSprite.Play(AnimatorNames.Die);
+ yield return ToSignal(AnimatedSprite, AnimatedSprite2D.SignalName.AnimationFinished);
+ DoDieHandler();
+ }
+
+ //死亡逻辑
+ private void DoDieHandler()
+ {
+ OnDie();
+ //死亡事件
+ World.OnRoleDie(this);
+ }
+
///
/// 播放无敌状态闪烁动画
///
diff --git a/DungeonShooting_Godot/src/game/activity/role/enemy/NoWeaponEnemy.cs b/DungeonShooting_Godot/src/game/activity/role/enemy/NoWeaponEnemy.cs
index 3dd5f63..e0d6d6e 100644
--- a/DungeonShooting_Godot/src/game/activity/role/enemy/NoWeaponEnemy.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/enemy/NoWeaponEnemy.cs
@@ -41,6 +41,10 @@
///
public virtual void OnAttack()
{
+ if (LookTarget == null)
+ {
+ return;
+ }
//攻击特效
var effect = ObjectManager.GetPoolItem(ResourcePath.prefab_effect_weapon_ShotFire0003_tscn);
var node = (Node2D)effect;
diff --git a/DungeonShooting_Godot/src/game/activity/role/player/Player.cs b/DungeonShooting_Godot/src/game/activity/role/player/Player.cs
index f3c85f3..57fec73 100644
--- a/DungeonShooting_Godot/src/game/activity/role/player/Player.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/player/Player.cs
@@ -300,6 +300,12 @@
{
PlayInvincibleFlashing(RoleState.ShieldInvincibleTime);
}
+
+ //血量为0, 扔掉所有武器
+ if (Hp <= 0)
+ {
+ ThrowAllWeapon();
+ }
}
protected override void OnChangeHp(int hp)
@@ -346,12 +352,16 @@
GameCamera.Main.SetFollowTarget(null);
BasisVelocity = Vector2.Zero;
MoveController.ClearForce();
+ Visible = false;
- //暂停游戏
- World.Current.Pause = true;
- //弹出结算面板
- GameApplication.Instance.Cursor.SetGuiMode(true);
- UiManager.Open_Settlement();
+ World.CallDelay(0.5f, () =>
+ {
+ //暂停游戏
+ World.Current.Pause = true;
+ //弹出结算面板
+ GameApplication.Instance.Cursor.SetGuiMode(true);
+ UiManager.Open_Settlement();
+ });
}
protected override void OnPickUpActiveProp(ActiveProp activeProp)
diff --git a/DungeonShooting_Godot/src/game/data/property/AnimatorNames.cs b/DungeonShooting_Godot/src/game/data/property/AnimatorNames.cs
index 88ae1af..aa5170c 100644
--- a/DungeonShooting_Godot/src/game/data/property/AnimatorNames.cs
+++ b/DungeonShooting_Godot/src/game/data/property/AnimatorNames.cs
@@ -101,6 +101,10 @@
///
public static readonly StringName Pull = "pull";
+ ///
+ /// 死亡
+ ///
+ public static readonly StringName Die = "die";
public static readonly StringName HalfStart = "half_start";
public static readonly StringName HalfEnd = "half_end";