diff --git a/DungeonShooting_Godot/excel/excelFile/ActivityBase.xlsx b/DungeonShooting_Godot/excel/excelFile/ActivityBase.xlsx
index 818426b..1d48dde 100644
--- a/DungeonShooting_Godot/excel/excelFile/ActivityBase.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/ActivityBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/excelFile/ActivityMaterial.xlsx b/DungeonShooting_Godot/excel/excelFile/ActivityMaterial.xlsx
index 8f9e321..fbe2bac 100644
--- a/DungeonShooting_Godot/excel/excelFile/ActivityMaterial.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/ActivityMaterial.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/excelFile/AiAttackAttr.xlsx b/DungeonShooting_Godot/excel/excelFile/AiAttackAttr.xlsx
index 2aefd57..73f833f 100644
--- a/DungeonShooting_Godot/excel/excelFile/AiAttackAttr.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/AiAttackAttr.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/excelFile/BulletBase.xlsx b/DungeonShooting_Godot/excel/excelFile/BulletBase.xlsx
index eb1663d..710727d 100644
--- a/DungeonShooting_Godot/excel/excelFile/BulletBase.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/BulletBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/excelFile/Sound.xlsx b/DungeonShooting_Godot/excel/excelFile/Sound.xlsx
index 18536a3..36b0dda 100644
--- a/DungeonShooting_Godot/excel/excelFile/Sound.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/Sound.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/excelFile/WeaponBase.xlsx b/DungeonShooting_Godot/excel/excelFile/WeaponBase.xlsx
index def9693..2ae295c 100644
--- a/DungeonShooting_Godot/excel/excelFile/WeaponBase.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/WeaponBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/prefab/effect/enemy/EbenyDead0001.tscn b/DungeonShooting_Godot/prefab/effect/enemy/EbenyDead0001.tscn
new file mode 100644
index 0000000..a73e62c
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/effect/enemy/EbenyDead0001.tscn
@@ -0,0 +1,205 @@
+[gd_scene load_steps=31 format=3 uid="uid://pr88a1phtxgb"]
+
+[ext_resource type="Script" path="res://src/game/effects/enemy/EnemyDead0001.cs" id="1_1re5v"]
+[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_s7bee"]
+[ext_resource type="Texture2D" uid="uid://cn64eauvwx1uj" path="res://resource/sprite/role/enemy0001/enemy0001_Debris.png" id="3_uinig"]
+[ext_resource type="Texture2D" uid="uid://h7hkgbwj1li" path="res://resource/sprite/effects/common/Smoke.png" id="4_t55wd"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_s1mj2"]
+resource_local_to_scene = true
+shader = ExtResource("2_s7bee")
+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
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_08fn3"]
+shader = ExtResource("2_s7bee")
+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 = false
+shader_parameter/outline_color = Color(0, 0, 0, 1)
+shader_parameter/outline_rainbow = false
+shader_parameter/outline_use_blend = true
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_cldwb"]
+atlas = ExtResource("3_uinig")
+region = Rect2(0, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ehtnl"]
+atlas = ExtResource("3_uinig")
+region = Rect2(16, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_j05gd"]
+atlas = ExtResource("3_uinig")
+region = Rect2(32, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_7el6f"]
+atlas = ExtResource("3_uinig")
+region = Rect2(48, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_n7sw3"]
+atlas = ExtResource("3_uinig")
+region = Rect2(64, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_mumsm"]
+atlas = ExtResource("3_uinig")
+region = Rect2(80, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_gx41d"]
+atlas = ExtResource("3_uinig")
+region = Rect2(96, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_r4nx1"]
+atlas = ExtResource("3_uinig")
+region = Rect2(112, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_s8j4o"]
+atlas = ExtResource("3_uinig")
+region = Rect2(128, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_2svrb"]
+atlas = ExtResource("3_uinig")
+region = Rect2(144, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_twd5t"]
+atlas = ExtResource("3_uinig")
+region = Rect2(160, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_8w5ka"]
+atlas = ExtResource("3_uinig")
+region = Rect2(176, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_6iumv"]
+atlas = ExtResource("3_uinig")
+region = Rect2(192, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_lpilf"]
+atlas = ExtResource("3_uinig")
+region = Rect2(208, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_n1a5a"]
+atlas = ExtResource("3_uinig")
+region = Rect2(224, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_q0oeq"]
+atlas = ExtResource("3_uinig")
+region = Rect2(240, 0, 16, 16)
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_15g84"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_cldwb")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ehtnl")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_j05gd")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_7el6f")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_n7sw3")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_mumsm")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_gx41d")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_r4nx1")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_s8j4o")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_2svrb")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_twd5t")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_8w5ka")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_6iumv")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_lpilf")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_n1a5a")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_q0oeq")
+}],
+"loop": false,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_0xl2q"]
+radius = 4.0
+
+[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_p3lv8"]
+particles_animation = true
+particles_anim_h_frames = 3
+particles_anim_v_frames = 1
+particles_anim_loop = false
+
+[sub_resource type="Gradient" id="Gradient_ryemi"]
+colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0.537255)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_orgu0"]
+gradient = SubResource("Gradient_ryemi")
+
+[sub_resource type="Curve" id="Curve_21dxk"]
+_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.177419, 1), 0.0, 0.0, 0, 0, Vector2(1, 0.0272727), 0.0, 0.0, 0, 0]
+point_count = 3
+
+[sub_resource type="CurveTexture" id="CurveTexture_rutlp"]
+curve = SubResource("Curve_21dxk")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_ku1mm"]
+particle_flag_disable_z = true
+angle_max = 360.0
+gravity = Vector3(0, 0, 0)
+scale_min = 0.4
+scale_max = 1.5
+scale_curve = SubResource("CurveTexture_rutlp")
+color = Color(0.811765, 0.0980392, 0.0980392, 0.627451)
+color_ramp = SubResource("GradientTexture1D_orgu0")
+anim_offset_max = 1.0
+
+[node name="Effect0001" type="CharacterBody2D" node_paths=PackedStringArray("ShadowSprite", "AnimatedSprite", "Collision")]
+collision_layer = 128
+script = ExtResource("1_1re5v")
+ShadowSprite = NodePath("ShadowSprite")
+AnimatedSprite = NodePath("AnimatedSprite")
+Collision = NodePath("Collision")
+
+[node name="ShadowSprite" type="Sprite2D" parent="."]
+z_index = -1
+material = SubResource("ShaderMaterial_s1mj2")
+
+[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
+material = SubResource("ShaderMaterial_08fn3")
+sprite_frames = SubResource("SpriteFrames_15g84")
+
+[node name="Collision" type="CollisionShape2D" parent="."]
+shape = SubResource("CircleShape2D_0xl2q")
+
+[node name="GPUParticles2D" type="GPUParticles2D" parent="."]
+material = SubResource("CanvasItemMaterial_p3lv8")
+emitting = false
+process_material = SubResource("ParticleProcessMaterial_ku1mm")
+texture = ExtResource("4_t55wd")
+fixed_fps = 20
diff --git a/DungeonShooting_Godot/prefab/effect/enemy/EbenyDead0002.tscn b/DungeonShooting_Godot/prefab/effect/enemy/EbenyDead0002.tscn
new file mode 100644
index 0000000..92abec4
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/effect/enemy/EbenyDead0002.tscn
@@ -0,0 +1,124 @@
+[gd_scene load_steps=19 format=3 uid="uid://nfx3lhkdhv6a"]
+
+[ext_resource type="Script" path="res://src/framework/activity/ActivityObject.cs" id="1_5vjr8"]
+[ext_resource type="Texture2D" uid="uid://x3tjqgdgp43n" path="res://resource/sprite/role/enemy0002/Enemy0002_dead.png" id="2_3cyjy"]
+[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_4hojo"]
+[ext_resource type="Texture2D" uid="uid://h7hkgbwj1li" path="res://resource/sprite/effects/common/Smoke.png" id="4_m7xko"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_s1mj2"]
+resource_local_to_scene = true
+shader = ExtResource("2_4hojo")
+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
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_08fn3"]
+resource_local_to_scene = true
+shader = ExtResource("2_4hojo")
+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 = false
+shader_parameter/outline_color = Color(0, 0, 0, 1)
+shader_parameter/outline_rainbow = false
+shader_parameter/outline_use_blend = true
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ag5h2"]
+atlas = ExtResource("2_3cyjy")
+region = Rect2(0, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_toly3"]
+atlas = ExtResource("2_3cyjy")
+region = Rect2(32, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_bqash"]
+atlas = ExtResource("2_3cyjy")
+region = Rect2(64, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_lx5fo"]
+atlas = ExtResource("2_3cyjy")
+region = Rect2(96, 0, 32, 32)
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_vhsqr"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ag5h2")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_toly3")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_bqash")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_lx5fo")
+}],
+"loop": false,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_0xl2q"]
+radius = 4.0
+
+[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_p3lv8"]
+particles_animation = true
+particles_anim_h_frames = 3
+particles_anim_v_frames = 1
+particles_anim_loop = false
+
+[sub_resource type="Gradient" id="Gradient_ryemi"]
+colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0.537255)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_orgu0"]
+gradient = SubResource("Gradient_ryemi")
+
+[sub_resource type="Curve" id="Curve_21dxk"]
+_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.177419, 1), 0.0, 0.0, 0, 0, Vector2(1, 0.0272727), 0.0, 0.0, 0, 0]
+point_count = 3
+
+[sub_resource type="CurveTexture" id="CurveTexture_rutlp"]
+curve = SubResource("Curve_21dxk")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_ku1mm"]
+particle_flag_disable_z = true
+angle_max = 360.0
+gravity = Vector3(0, 0, 0)
+scale_min = 0.4
+scale_max = 1.5
+scale_curve = SubResource("CurveTexture_rutlp")
+color = Color(0.811765, 0.0980392, 0.0980392, 0.627451)
+color_ramp = SubResource("GradientTexture1D_orgu0")
+anim_offset_max = 1.0
+
+[node name="Effect0002" type="CharacterBody2D" node_paths=PackedStringArray("ShadowSprite", "AnimatedSprite", "Collision")]
+collision_layer = 128
+script = ExtResource("1_5vjr8")
+ShadowSprite = NodePath("ShadowSprite")
+AnimatedSprite = NodePath("AnimatedSprite")
+Collision = NodePath("Collision")
+
+[node name="ShadowSprite" type="Sprite2D" parent="."]
+z_index = -1
+material = SubResource("ShaderMaterial_s1mj2")
+
+[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
+material = SubResource("ShaderMaterial_08fn3")
+sprite_frames = SubResource("SpriteFrames_vhsqr")
+autoplay = "default"
+offset = Vector2(0, -9)
+
+[node name="Collision" type="CollisionShape2D" parent="."]
+shape = SubResource("CircleShape2D_0xl2q")
+
+[node name="GPUParticles2D" type="GPUParticles2D" parent="."]
+material = SubResource("CanvasItemMaterial_p3lv8")
+emitting = false
+process_material = SubResource("ParticleProcessMaterial_ku1mm")
+texture = ExtResource("4_m7xko")
+fixed_fps = 20
diff --git a/DungeonShooting_Godot/prefab/effect/enemy/Effect0001.tscn b/DungeonShooting_Godot/prefab/effect/enemy/Effect0001.tscn
deleted file mode 100644
index 1dcd443..0000000
--- a/DungeonShooting_Godot/prefab/effect/enemy/Effect0001.tscn
+++ /dev/null
@@ -1,205 +0,0 @@
-[gd_scene load_steps=31 format=3 uid="uid://pr88a1phtxgb"]
-
-[ext_resource type="Script" path="res://src/game/effects/enemy/EnemyDebris.cs" id="1_ttosm"]
-[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_h62s7"]
-[ext_resource type="Texture2D" uid="uid://cn64eauvwx1uj" path="res://resource/sprite/role/enemy0001/enemy0001_Debris.png" id="3_6ewaj"]
-[ext_resource type="Texture2D" uid="uid://h7hkgbwj1li" path="res://resource/sprite/effects/common/Smoke.png" id="4_wu0t6"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_s1mj2"]
-resource_local_to_scene = true
-shader = ExtResource("2_h62s7")
-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
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_08fn3"]
-shader = ExtResource("2_h62s7")
-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 = false
-shader_parameter/outline_color = Color(0, 0, 0, 1)
-shader_parameter/outline_rainbow = false
-shader_parameter/outline_use_blend = true
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_cldwb"]
-atlas = ExtResource("3_6ewaj")
-region = Rect2(0, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_ehtnl"]
-atlas = ExtResource("3_6ewaj")
-region = Rect2(16, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_j05gd"]
-atlas = ExtResource("3_6ewaj")
-region = Rect2(32, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_7el6f"]
-atlas = ExtResource("3_6ewaj")
-region = Rect2(48, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_n7sw3"]
-atlas = ExtResource("3_6ewaj")
-region = Rect2(64, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_mumsm"]
-atlas = ExtResource("3_6ewaj")
-region = Rect2(80, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_gx41d"]
-atlas = ExtResource("3_6ewaj")
-region = Rect2(96, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_r4nx1"]
-atlas = ExtResource("3_6ewaj")
-region = Rect2(112, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_s8j4o"]
-atlas = ExtResource("3_6ewaj")
-region = Rect2(128, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_2svrb"]
-atlas = ExtResource("3_6ewaj")
-region = Rect2(144, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_twd5t"]
-atlas = ExtResource("3_6ewaj")
-region = Rect2(160, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_8w5ka"]
-atlas = ExtResource("3_6ewaj")
-region = Rect2(176, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_6iumv"]
-atlas = ExtResource("3_6ewaj")
-region = Rect2(192, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_lpilf"]
-atlas = ExtResource("3_6ewaj")
-region = Rect2(208, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_n1a5a"]
-atlas = ExtResource("3_6ewaj")
-region = Rect2(224, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_q0oeq"]
-atlas = ExtResource("3_6ewaj")
-region = Rect2(240, 0, 16, 16)
-
-[sub_resource type="SpriteFrames" id="SpriteFrames_15g84"]
-animations = [{
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_cldwb")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_ehtnl")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_j05gd")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_7el6f")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_n7sw3")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_mumsm")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_gx41d")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_r4nx1")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_s8j4o")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_2svrb")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_twd5t")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_8w5ka")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_6iumv")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_lpilf")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_n1a5a")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_q0oeq")
-}],
-"loop": true,
-"name": &"default",
-"speed": 5.0
-}]
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_0xl2q"]
-radius = 4.0
-
-[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_p3lv8"]
-particles_animation = true
-particles_anim_h_frames = 3
-particles_anim_v_frames = 1
-particles_anim_loop = false
-
-[sub_resource type="Gradient" id="Gradient_ryemi"]
-colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0.537255)
-
-[sub_resource type="GradientTexture1D" id="GradientTexture1D_orgu0"]
-gradient = SubResource("Gradient_ryemi")
-
-[sub_resource type="Curve" id="Curve_21dxk"]
-_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.177419, 1), 0.0, 0.0, 0, 0, Vector2(1, 0.0272727), 0.0, 0.0, 0, 0]
-point_count = 3
-
-[sub_resource type="CurveTexture" id="CurveTexture_rutlp"]
-curve = SubResource("Curve_21dxk")
-
-[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_ku1mm"]
-particle_flag_disable_z = true
-angle_max = 360.0
-gravity = Vector3(0, 0, 0)
-scale_min = 0.4
-scale_max = 1.5
-scale_curve = SubResource("CurveTexture_rutlp")
-color = Color(0.811765, 0.0980392, 0.0980392, 0.627451)
-color_ramp = SubResource("GradientTexture1D_orgu0")
-anim_offset_max = 1.0
-
-[node name="Effect0001" type="CharacterBody2D" node_paths=PackedStringArray("ShadowSprite", "AnimatedSprite", "Collision")]
-collision_layer = 128
-script = ExtResource("1_ttosm")
-ShadowSprite = NodePath("ShadowSprite")
-AnimatedSprite = NodePath("AnimatedSprite")
-Collision = NodePath("Collision")
-
-[node name="ShadowSprite" type="Sprite2D" parent="."]
-z_index = -1
-material = SubResource("ShaderMaterial_s1mj2")
-
-[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
-material = SubResource("ShaderMaterial_08fn3")
-sprite_frames = SubResource("SpriteFrames_15g84")
-
-[node name="Collision" type="CollisionShape2D" parent="."]
-shape = SubResource("CircleShape2D_0xl2q")
-
-[node name="GPUParticles2D" type="GPUParticles2D" parent="."]
-material = SubResource("CanvasItemMaterial_p3lv8")
-emitting = false
-process_material = SubResource("ParticleProcessMaterial_ku1mm")
-texture = ExtResource("4_wu0t6")
-fixed_fps = 20
diff --git a/DungeonShooting_Godot/prefab/effect/enemy/EnemyBlood0001.tscn b/DungeonShooting_Godot/prefab/effect/enemy/EnemyBlood0001.tscn
new file mode 100644
index 0000000..1ffbf1b
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/effect/enemy/EnemyBlood0001.tscn
@@ -0,0 +1,25 @@
+[gd_scene load_steps=5 format=3 uid="uid://m0s0k5nw7nbi"]
+
+[ext_resource type="Material" uid="uid://c1chld6lkpgji" path="res://resource/material/SmokeParticleMaterial.tres" id="1_leomh"]
+[ext_resource type="Texture2D" uid="uid://h7hkgbwj1li" path="res://resource/sprite/effects/common/Smoke.png" id="2_c2t2e"]
+[ext_resource type="Script" path="res://src/game/effects/AutoDestroyParticles.cs" id="3_5cpi6"]
+
+[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_emuda"]
+particles_animation = true
+particles_anim_h_frames = 3
+particles_anim_v_frames = 1
+particles_anim_loop = false
+
+[node name="EnemyBloodEffect" type="GPUParticles2D" node_paths=PackedStringArray("Particles2D")]
+modulate = Color(0.811765, 0.0980392, 0.0980392, 0.627451)
+material = SubResource("CanvasItemMaterial_emuda")
+emitting = false
+amount = 10
+process_material = ExtResource("1_leomh")
+texture = ExtResource("2_c2t2e")
+lifetime = 1.2
+one_shot = true
+explosiveness = 1.0
+fixed_fps = 20
+script = ExtResource("3_5cpi6")
+Particles2D = []
diff --git a/DungeonShooting_Godot/prefab/effect/enemy/EnemyBloodEffect.tscn b/DungeonShooting_Godot/prefab/effect/enemy/EnemyBloodEffect.tscn
deleted file mode 100644
index 1ffbf1b..0000000
--- a/DungeonShooting_Godot/prefab/effect/enemy/EnemyBloodEffect.tscn
+++ /dev/null
@@ -1,25 +0,0 @@
-[gd_scene load_steps=5 format=3 uid="uid://m0s0k5nw7nbi"]
-
-[ext_resource type="Material" uid="uid://c1chld6lkpgji" path="res://resource/material/SmokeParticleMaterial.tres" id="1_leomh"]
-[ext_resource type="Texture2D" uid="uid://h7hkgbwj1li" path="res://resource/sprite/effects/common/Smoke.png" id="2_c2t2e"]
-[ext_resource type="Script" path="res://src/game/effects/AutoDestroyParticles.cs" id="3_5cpi6"]
-
-[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_emuda"]
-particles_animation = true
-particles_anim_h_frames = 3
-particles_anim_v_frames = 1
-particles_anim_loop = false
-
-[node name="EnemyBloodEffect" type="GPUParticles2D" node_paths=PackedStringArray("Particles2D")]
-modulate = Color(0.811765, 0.0980392, 0.0980392, 0.627451)
-material = SubResource("CanvasItemMaterial_emuda")
-emitting = false
-amount = 10
-process_material = ExtResource("1_leomh")
-texture = ExtResource("2_c2t2e")
-lifetime = 1.2
-one_shot = true
-explosiveness = 1.0
-fixed_fps = 20
-script = ExtResource("3_5cpi6")
-Particles2D = []
diff --git a/DungeonShooting_Godot/resource/config/ActivityBase.json b/DungeonShooting_Godot/resource/config/ActivityBase.json
index d5a76c2..5208332 100644
--- a/DungeonShooting_Godot/resource/config/ActivityBase.json
+++ b/DungeonShooting_Godot/resource/config/ActivityBase.json
@@ -252,14 +252,26 @@
"ShowInMapEditor": false
},
{
- "Id": "effect0001",
+ "Id": "enemy_dead0001",
"Type": 8,
"Name": "",
- "Intro": "\u654C\u4EBA\u6B7B\u4EA1\u788E\u7247",
+ "Intro": "\u654C\u4EBA1\u6B7B\u4EA1\u788E\u7247",
"Details": "",
"IsStatic": false,
"__Material": "",
- "Prefab": "res://prefab/effect/enemy/Effect0001.tscn",
+ "Prefab": "res://prefab/effect/enemy/EbenyDead0001.tscn",
+ "Icon": "",
+ "ShowInMapEditor": false
+ },
+ {
+ "Id": "enemy_dead0002",
+ "Type": 8,
+ "Name": "",
+ "Intro": "\u654C\u4EBA2\u6B7B\u4EA1",
+ "Details": "",
+ "IsStatic": false,
+ "__Material": "",
+ "Prefab": "res://prefab/effect/enemy/EbenyDead0002.tscn",
"Icon": "",
"ShowInMapEditor": false
},
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0002/Enemy0002_dead.png b/DungeonShooting_Godot/resource/sprite/role/enemy0002/Enemy0002_dead.png
index 80665e9..69431f9 100644
--- a/DungeonShooting_Godot/resource/sprite/role/enemy0002/Enemy0002_dead.png
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0002/Enemy0002_dead.png
Binary files differ
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
index b4bfe60..f81f952 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
@@ -10,7 +10,8 @@
/// 该类提供基础物体运动模拟, 互动接口, 自定义组件, 协程等功能
/// ActivityObject 子类实例化请不要直接使用 new, 而用该在类上标上 [Tool], 并在 ActivityObject.xlsx 配置文件中注册物体, 导出配置表后使用 ActivityObject.Create(id) 来创建实例.
///
-public abstract partial class ActivityObject : CharacterBody2D, IDestroy, ICoroutine
+[Tool]
+public partial class ActivityObject : CharacterBody2D, IDestroy, ICoroutine
{
///
/// 是否是调试模式
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
index df2a5bf..02b1b5e 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
@@ -115,9 +115,14 @@
public const string Id_shell0004 = "shell0004";
///
/// 名称:
- /// 简介: 敌人死亡碎片
+ /// 简介: 敌人1死亡碎片
///
- public const string Id_effect0001 = "effect0001";
+ public const string Id_enemy_dead0001 = "enemy_dead0001";
+ ///
+ /// 名称:
+ /// 简介: 敌人2死亡
+ ///
+ public const string Id_enemy_dead0002 = "enemy_dead0002";
///
/// 名称: 鞋子
/// 简介: 提高移动速度
diff --git a/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs b/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs
index 90c89dd..ebec6c8 100644
--- a/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs
@@ -150,7 +150,7 @@
var effPos = Position + new Vector2(0, -Altitude);
//血液特效
- var blood = ObjectManager.GetPoolItem(ResourcePath.prefab_effect_enemy_EnemyBloodEffect_tscn);
+ var blood = ObjectManager.GetPoolItem(ResourcePath.prefab_effect_enemy_EnemyBlood0001_tscn);
blood.Position = effPos - new Vector2(0, 12);
blood.AddToActivityRoot(RoomLayerEnum.NormalLayer);
blood.PlayEffect();
@@ -159,7 +159,7 @@
var count = Utils.Random.RandomRangeInt(3, 6);
for (var i = 0; i < count; i++)
{
- var debris = Create(Ids.Id_effect0001);
+ var debris = Create(Ids.Id_enemy_dead0001);
debris.PutDown(effPos, RoomLayerEnum.NormalLayer);
debris.InheritVelocity(this);
}
diff --git a/DungeonShooting_Godot/src/game/activity/role/enemy/NoWeaponEnemy.cs b/DungeonShooting_Godot/src/game/activity/role/enemy/NoWeaponEnemy.cs
index 0c7ce65..745a057 100644
--- a/DungeonShooting_Godot/src/game/activity/role/enemy/NoWeaponEnemy.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/enemy/NoWeaponEnemy.cs
@@ -35,6 +35,18 @@
}
}
+ protected override void OnDie()
+ {
+ var effPos = Position;
+ var debris = Create(Ids.Id_enemy_dead0002);
+ debris.PutDown(effPos, RoomLayerEnum.NormalLayer);
+ debris.InheritVelocity(this);
+
+ //派发敌人死亡信号
+ EventManager.EmitEvent(EventEnum.OnEnemyDie, this);
+ Destroy();
+ }
+
private void OnAnimationFinished(StringName name)
{
if (name == AnimatorNames.Attack)
diff --git a/DungeonShooting_Godot/src/game/effects/enemy/EnemyDead0001.cs b/DungeonShooting_Godot/src/game/effects/enemy/EnemyDead0001.cs
new file mode 100644
index 0000000..d600a25
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/effects/enemy/EnemyDead0001.cs
@@ -0,0 +1,48 @@
+
+using System.Collections;
+using Godot;
+
+///
+/// 敌人死亡碎片
+///
+[Tool]
+public partial class EnemyDead0001 : ActivityObject
+{
+
+ private GpuParticles2D _gpuParticles2D;
+ private bool _playOver = false;
+
+ public override void OnInit()
+ {
+ var frameCount = AnimatedSprite.SpriteFrames.GetFrameCount(AnimatorNames.Default);
+ AnimatedSprite.Frame = Utils.Random.RandomRangeInt(0, frameCount - 1);
+
+ Throw(
+ Utils.Random.RandomRangeInt(0, 16),
+ Utils.Random.RandomRangeInt(10, 60),
+ new Vector2(Utils.Random.RandomRangeInt(-25, 25), Utils.Random.RandomRangeInt(-25, 25)),
+ Utils.Random.RandomRangeInt(-360, 360)
+ );
+
+ StartCoroutine(EmitParticles());
+ }
+
+ protected override void Process(float delta)
+ {
+ if (_playOver && !IsThrowing && Altitude <= 0 && MoveController.IsMotionless())
+ {
+ MoveController.SetAllVelocity(Vector2.Zero);
+ Freeze();
+ }
+ }
+
+ public IEnumerator EmitParticles()
+ {
+ var gpuParticles2D = GetNode("GPUParticles2D");
+ gpuParticles2D.Emitting = true;
+ yield return new WaitForSeconds(Utils.Random.RandomRangeFloat(1f, 2.5f));
+ gpuParticles2D.Emitting = false;
+ yield return new WaitForSeconds(1);
+ _playOver = true;
+ }
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/effects/enemy/EnemyDebris.cs b/DungeonShooting_Godot/src/game/effects/enemy/EnemyDebris.cs
deleted file mode 100644
index d96d1c2..0000000
--- a/DungeonShooting_Godot/src/game/effects/enemy/EnemyDebris.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-
-using System.Collections;
-using Godot;
-
-///
-/// 敌人死亡碎片
-///
-[Tool]
-public partial class EnemyDebris : ActivityObject
-{
-
- private GpuParticles2D _gpuParticles2D;
- private bool _playOver = false;
-
- public override void OnInit()
- {
- var frameCount = AnimatedSprite.SpriteFrames.GetFrameCount(AnimatorNames.Default);
- AnimatedSprite.Frame = Utils.Random.RandomRangeInt(0, frameCount - 1);
-
- Throw(
- Utils.Random.RandomRangeInt(0, 16),
- Utils.Random.RandomRangeInt(10, 60),
- new Vector2(Utils.Random.RandomRangeInt(-25, 25), Utils.Random.RandomRangeInt(-25, 25)),
- Utils.Random.RandomRangeInt(-360, 360)
- );
-
- StartCoroutine(EmitParticles());
- }
-
- protected override void Process(float delta)
- {
- if (_playOver && !IsThrowing && Altitude <= 0 && MoveController.IsMotionless())
- {
- MoveController.SetAllVelocity(Vector2.Zero);
- Freeze();
- }
- }
-
- public IEnumerator EmitParticles()
- {
- var gpuParticles2D = GetNode("GPUParticles2D");
- gpuParticles2D.Emitting = true;
- yield return new WaitForSeconds(Utils.Random.RandomRangeFloat(1f, 2.5f));
- gpuParticles2D.Emitting = false;
- yield return new WaitForSeconds(1);
- _playOver = true;
- }
-}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
index cd7de40..7a7eb31 100644
--- a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
+++ b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
@@ -18,8 +18,8 @@
public const string prefab_bullet_normal_Bullet0005_tscn = "res://prefab/bullet/normal/Bullet0005.tscn";
public const string prefab_effect_Blood_tscn = "res://prefab/effect/Blood.tscn";
public const string prefab_effect_common_Effect1_tscn = "res://prefab/effect/common/Effect1.tscn";
- public const string prefab_effect_enemy_Effect0001_tscn = "res://prefab/effect/enemy/Effect0001.tscn";
- public const string prefab_effect_enemy_EnemyBloodEffect_tscn = "res://prefab/effect/enemy/EnemyBloodEffect.tscn";
+ public const string prefab_effect_enemy_EbenyDead0001_tscn = "res://prefab/effect/enemy/EbenyDead0001.tscn";
+ public const string prefab_effect_enemy_EnemyBlood0001_tscn = "res://prefab/effect/enemy/EnemyBlood0001.tscn";
public const string prefab_effect_weapon_BulletDisappear_tscn = "res://prefab/effect/weapon/BulletDisappear.tscn";
public const string prefab_effect_weapon_BulletSmoke_tscn = "res://prefab/effect/weapon/BulletSmoke.tscn";
public const string prefab_effect_weapon_MeleeAttack1_tscn = "res://prefab/effect/weapon/MeleeAttack1.tscn";
@@ -48,6 +48,7 @@
public const string prefab_prop_buff_BuffProp0013_tscn = "res://prefab/prop/buff/BuffProp0013.tscn";
public const string prefab_prop_buff_BuffProp0014_tscn = "res://prefab/prop/buff/BuffProp0014.tscn";
public const string prefab_role_Enemy0001_tscn = "res://prefab/role/Enemy0001.tscn";
+ public const string prefab_role_Enemy0002_tscn = "res://prefab/role/Enemy0002.tscn";
public const string prefab_role_Role0001_tscn = "res://prefab/role/Role0001.tscn";
public const string prefab_role_template_EnemyTemplate_tscn = "res://prefab/role/template/EnemyTemplate.tscn";
public const string prefab_role_template_RoleTemplate_tscn = "res://prefab/role/template/RoleTemplate.tscn";