diff --git a/DungeonShooting_Godot/prefab/effect/bullet/BulletDisappear0001.tscn b/DungeonShooting_Godot/prefab/effect/bullet/BulletDisappear0001.tscn
new file mode 100644
index 0000000..31f2655
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/effect/bullet/BulletDisappear0001.tscn
@@ -0,0 +1,90 @@
+[gd_scene load_steps=13 format=3 uid="uid://c6mmikwchwt"]
+
+[ext_resource type="Texture2D" uid="uid://4be6mi1egtiy" path="res://resource/sprite/effects/explode/Explode_circle0003.png" id="1_nag6e"]
+[ext_resource type="Script" path="res://src/game/effects/AutoDestroySprite.cs" id="2_db7di"]
+[ext_resource type="Texture2D" uid="uid://h7hkgbwj1li" path="res://resource/sprite/effects/common/Smoke.png" id="3_2w51u"]
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_tscb3"]
+atlas = ExtResource("1_nag6e")
+region = Rect2(0, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_l2nv6"]
+atlas = ExtResource("1_nag6e")
+region = Rect2(16, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_5133m"]
+atlas = ExtResource("1_nag6e")
+region = Rect2(32, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_41eg5"]
+atlas = ExtResource("1_nag6e")
+region = Rect2(48, 0, 16, 16)
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_ub3cw"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_tscb3")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_l2nv6")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_5133m")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_41eg5")
+}, {
+"duration": 1.0,
+"texture": null
+}],
+"loop": false,
+"name": &"default",
+"speed": 13.0
+}]
+
+[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_4bd3q"]
+particles_animation = true
+particles_anim_h_frames = 3
+particles_anim_v_frames = 1
+particles_anim_loop = false
+
+[sub_resource type="Curve" id="Curve_86ye5"]
+_data = [Vector2(0, 0.736364), 0.0, 0.0, 0, 0, Vector2(0.396825, 1), 0.0, 0.0, 0, 0, Vector2(0.990476, 0), 0.0, 0.0, 0, 0]
+point_count = 3
+
+[sub_resource type="CurveTexture" id="CurveTexture_j77i6"]
+curve = SubResource("Curve_86ye5")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_r1yeu"]
+lifetime_randomness = 0.3
+particle_flag_disable_z = true
+angle_max = 360.0
+spread = 180.0
+initial_velocity_min = 45.0
+initial_velocity_max = 65.0
+gravity = Vector3(0, 0, 0)
+scale_min = 0.3
+scale_max = 0.6
+scale_curve = SubResource("CurveTexture_j77i6")
+color = Color(0.909804, 0.909804, 0.909804, 0.380392)
+anim_offset_max = 1.0
+
+[node name="BulletDisappear0002" type="AnimatedSprite2D" node_paths=PackedStringArray("Particles2D")]
+modulate = Color(1, 1, 1, 0.784314)
+z_index = -4
+scale = Vector2(0.5, 0.5)
+sprite_frames = SubResource("SpriteFrames_ub3cw")
+script = ExtResource("2_db7di")
+DelayTime = 0.5
+Particles2D = [NodePath("GPUParticles2D")]
+
+[node name="GPUParticles2D" type="GPUParticles2D" parent="."]
+material = SubResource("CanvasItemMaterial_4bd3q")
+emitting = false
+process_material = SubResource("ParticleProcessMaterial_r1yeu")
+texture = ExtResource("3_2w51u")
+lifetime = 0.3
+one_shot = true
+explosiveness = 0.9
+fixed_fps = 20
diff --git a/DungeonShooting_Godot/prefab/effect/bullet/BulletDisappear0002.tscn b/DungeonShooting_Godot/prefab/effect/bullet/BulletDisappear0002.tscn
new file mode 100644
index 0000000..16c69d2
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/effect/bullet/BulletDisappear0002.tscn
@@ -0,0 +1,114 @@
+[gd_scene load_steps=16 format=3 uid="uid://7fjw62ymmrl7"]
+
+[ext_resource type="Texture2D" uid="uid://cusp3s5t7qbuy" path="res://resource/sprite/effects/explode/Explode_circle0002.png" id="1_xuqre"]
+[ext_resource type="Script" path="res://src/game/effects/AutoDestroySprite.cs" id="2_eeot2"]
+[ext_resource type="Texture2D" uid="uid://du0f3km5jhxlg" path="res://resource/sprite/effects/common/Smoke4.png" id="3_yow4l"]
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_w7xvw"]
+atlas = ExtResource("1_xuqre")
+region = Rect2(0, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_tt7yd"]
+atlas = ExtResource("1_xuqre")
+region = Rect2(16, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_5yu76"]
+atlas = ExtResource("1_xuqre")
+region = Rect2(32, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_obu2v"]
+atlas = ExtResource("1_xuqre")
+region = Rect2(48, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_5nbmq"]
+atlas = ExtResource("1_xuqre")
+region = Rect2(64, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_tiuph"]
+atlas = ExtResource("1_xuqre")
+region = Rect2(80, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_n3apl"]
+atlas = ExtResource("1_xuqre")
+region = Rect2(96, 0, 16, 16)
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_ub3cw"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_w7xvw")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_tt7yd")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_5yu76")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_obu2v")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_5nbmq")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_tiuph")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_n3apl")
+}, {
+"duration": 1.0,
+"texture": null
+}],
+"loop": false,
+"name": &"default",
+"speed": 18.0
+}]
+
+[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_4bd3q"]
+particles_animation = true
+particles_anim_h_frames = 3
+particles_anim_v_frames = 1
+particles_anim_loop = false
+
+[sub_resource type="Curve" id="Curve_86ye5"]
+_data = [Vector2(0.0215054, 1), 0.0, 0.0, 0, 0, Vector2(0.512545, 0.882353), 0.0, 0.0, 0, 0, Vector2(1, 0.152941), 0.0, 0.0, 0, 0]
+point_count = 3
+
+[sub_resource type="CurveTexture" id="CurveTexture_j77i6"]
+curve = SubResource("Curve_86ye5")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_8k30u"]
+lifetime_randomness = 0.3
+particle_flag_disable_z = true
+angle_max = 360.0
+direction = Vector3(0, -1, 0)
+initial_velocity_min = 70.0
+initial_velocity_max = 90.0
+gravity = Vector3(0, 150, 0)
+scale_min = 0.9
+scale_max = 1.5
+scale_curve = SubResource("CurveTexture_j77i6")
+color = Color(1, 1, 1, 0.392157)
+anim_offset_max = 1.0
+
+[node name="BulletDisappear0002" type="AnimatedSprite2D" node_paths=PackedStringArray("Particles2D")]
+modulate = Color(0.952941, 0.709804, 0.635294, 1)
+z_index = -4
+scale = Vector2(0.5, 0.5)
+sprite_frames = SubResource("SpriteFrames_ub3cw")
+frame = 7
+frame_progress = 1.0
+script = ExtResource("2_eeot2")
+DelayTime = 1.5
+Particles2D = [NodePath("GPUParticles2D")]
+
+[node name="GPUParticles2D" type="GPUParticles2D" parent="."]
+material = SubResource("CanvasItemMaterial_4bd3q")
+emitting = false
+process_material = SubResource("ParticleProcessMaterial_8k30u")
+texture = ExtResource("3_yow4l")
+lifetime = 0.5
+one_shot = true
+explosiveness = 0.9
+randomness = 0.5
+fixed_fps = 20
diff --git a/DungeonShooting_Godot/prefab/effect/bullet/BulletSmoke0001.tscn b/DungeonShooting_Godot/prefab/effect/bullet/BulletSmoke0001.tscn
new file mode 100644
index 0000000..1044745
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/effect/bullet/BulletSmoke0001.tscn
@@ -0,0 +1,42 @@
+[gd_scene load_steps=7 format=3 uid="uid://b8ogu2l8pa70y"]
+
+[ext_resource type="Texture2D" uid="uid://h7hkgbwj1li" path="res://resource/sprite/effects/common/Smoke.png" id="1"]
+[ext_resource type="Texture2D" uid="uid://bs1lan5uwxyfg" path="res://resource/curve/Curve1.tres" id="1_8pe88"]
+[ext_resource type="SpriteFrames" uid="uid://pwg2tx7dmcvp" path="res://resource/spriteFrames/effect/weapon/Collision1.tres" id="1_r62v8"]
+[ext_resource type="Script" path="res://src/game/effects/AutoDestroySprite.cs" id="2_r547d"]
+
+[sub_resource type="CanvasItemMaterial" id="1"]
+particles_animation = true
+particles_anim_h_frames = 3
+particles_anim_v_frames = 1
+particles_anim_loop = false
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_gpp81"]
+lifetime_randomness = 0.5
+particle_flag_disable_z = true
+angle_max = 360.0
+spread = 25.0
+initial_velocity_max = 90.0
+gravity = Vector3(0, 0, 0)
+scale_curve = ExtResource("1_8pe88")
+color = Color(0.75, 0.75, 0.75, 0.470588)
+anim_offset_max = 1.0
+
+[node name="BulletSmoke0001" type="AnimatedSprite2D" node_paths=PackedStringArray("Particles2D")]
+sprite_frames = ExtResource("1_r62v8")
+frame = 4
+frame_progress = 1.0
+offset = Vector2(8, 0)
+script = ExtResource("2_r547d")
+Particles2D = [NodePath("GpuParticles2D")]
+
+[node name="GpuParticles2D" type="GPUParticles2D" parent="."]
+show_behind_parent = true
+material = SubResource("1")
+emitting = false
+process_material = SubResource("ParticleProcessMaterial_gpp81")
+texture = ExtResource("1")
+lifetime = 0.4
+one_shot = true
+explosiveness = 0.9
+fixed_fps = 20
diff --git a/DungeonShooting_Godot/prefab/effect/weapon/BulletDisappear.tscn b/DungeonShooting_Godot/prefab/effect/weapon/BulletDisappear.tscn
deleted file mode 100644
index a5c2a07..0000000
--- a/DungeonShooting_Godot/prefab/effect/weapon/BulletDisappear.tscn
+++ /dev/null
@@ -1,90 +0,0 @@
-[gd_scene load_steps=13 format=3 uid="uid://c6mmikwchwt"]
-
-[ext_resource type="Texture2D" uid="uid://d8ot2wrdoe4j" path="res://resource/sprite/effects/Explosion.png" id="1_qqm6c"]
-[ext_resource type="Texture2D" uid="uid://h7hkgbwj1li" path="res://resource/sprite/effects/common/Smoke.png" id="1_ybsvf"]
-[ext_resource type="Script" path="res://src/game/effects/AutoDestroySprite.cs" id="2_l2qlq"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_tscb3"]
-atlas = ExtResource("1_qqm6c")
-region = Rect2(0, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_l2nv6"]
-atlas = ExtResource("1_qqm6c")
-region = Rect2(16, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_5133m"]
-atlas = ExtResource("1_qqm6c")
-region = Rect2(32, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_41eg5"]
-atlas = ExtResource("1_qqm6c")
-region = Rect2(48, 0, 16, 16)
-
-[sub_resource type="SpriteFrames" id="SpriteFrames_ub3cw"]
-animations = [{
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_tscb3")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_l2nv6")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_5133m")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_41eg5")
-}, {
-"duration": 1.0,
-"texture": null
-}],
-"loop": false,
-"name": &"default",
-"speed": 13.0
-}]
-
-[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_4bd3q"]
-particles_animation = true
-particles_anim_h_frames = 3
-particles_anim_v_frames = 1
-particles_anim_loop = false
-
-[sub_resource type="Curve" id="Curve_86ye5"]
-_data = [Vector2(0, 0.736364), 0.0, 0.0, 0, 0, Vector2(0.396825, 1), 0.0, 0.0, 0, 0, Vector2(0.990476, 0), 0.0, 0.0, 0, 0]
-point_count = 3
-
-[sub_resource type="CurveTexture" id="CurveTexture_j77i6"]
-curve = SubResource("Curve_86ye5")
-
-[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_r1yeu"]
-lifetime_randomness = 0.3
-particle_flag_disable_z = true
-angle_max = 360.0
-spread = 180.0
-initial_velocity_min = 45.0
-initial_velocity_max = 65.0
-gravity = Vector3(0, 0, 0)
-scale_min = 0.3
-scale_max = 0.6
-scale_curve = SubResource("CurveTexture_j77i6")
-color = Color(0.909804, 0.909804, 0.909804, 0.380392)
-anim_offset_max = 1.0
-
-[node name="BulletDisappear" type="AnimatedSprite2D" node_paths=PackedStringArray("Particles2D")]
-modulate = Color(1, 1, 1, 0.784314)
-z_index = -4
-scale = Vector2(0.5, 0.5)
-sprite_frames = SubResource("SpriteFrames_ub3cw")
-script = ExtResource("2_l2qlq")
-DelayTime = 0.5
-Particles2D = [NodePath("GPUParticles2D")]
-
-[node name="GPUParticles2D" type="GPUParticles2D" parent="."]
-material = SubResource("CanvasItemMaterial_4bd3q")
-emitting = false
-process_material = SubResource("ParticleProcessMaterial_r1yeu")
-texture = ExtResource("1_ybsvf")
-lifetime = 0.3
-one_shot = true
-explosiveness = 0.9
-fixed_fps = 20
diff --git a/DungeonShooting_Godot/prefab/effect/weapon/BulletSmoke.tscn b/DungeonShooting_Godot/prefab/effect/weapon/BulletSmoke.tscn
deleted file mode 100644
index 83786a2..0000000
--- a/DungeonShooting_Godot/prefab/effect/weapon/BulletSmoke.tscn
+++ /dev/null
@@ -1,42 +0,0 @@
-[gd_scene load_steps=7 format=3 uid="uid://b8ogu2l8pa70y"]
-
-[ext_resource type="Texture2D" uid="uid://h7hkgbwj1li" path="res://resource/sprite/effects/common/Smoke.png" id="1"]
-[ext_resource type="Texture2D" uid="uid://bs1lan5uwxyfg" path="res://resource/curve/Curve1.tres" id="1_8pe88"]
-[ext_resource type="SpriteFrames" uid="uid://pwg2tx7dmcvp" path="res://resource/spriteFrames/effect/weapon/Collision1.tres" id="1_r62v8"]
-[ext_resource type="Script" path="res://src/game/effects/AutoDestroySprite.cs" id="2_r547d"]
-
-[sub_resource type="CanvasItemMaterial" id="1"]
-particles_animation = true
-particles_anim_h_frames = 3
-particles_anim_v_frames = 1
-particles_anim_loop = false
-
-[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_gpp81"]
-lifetime_randomness = 0.5
-particle_flag_disable_z = true
-angle_max = 360.0
-spread = 25.0
-initial_velocity_max = 90.0
-gravity = Vector3(0, 0, 0)
-scale_curve = ExtResource("1_8pe88")
-color = Color(0.75, 0.75, 0.75, 0.470588)
-anim_offset_max = 1.0
-
-[node name="BulletSmoke" type="AnimatedSprite2D" node_paths=PackedStringArray("Particles2D")]
-sprite_frames = ExtResource("1_r62v8")
-frame = 4
-frame_progress = 1.0
-offset = Vector2(8, 0)
-script = ExtResource("2_r547d")
-Particles2D = [NodePath("GpuParticles2D")]
-
-[node name="GpuParticles2D" type="GPUParticles2D" parent="."]
-show_behind_parent = true
-material = SubResource("1")
-emitting = false
-process_material = SubResource("ParticleProcessMaterial_gpp81")
-texture = ExtResource("1")
-lifetime = 0.4
-one_shot = true
-explosiveness = 0.9
-fixed_fps = 20
diff --git a/DungeonShooting_Godot/resource/sprite/effects/Explosion.png b/DungeonShooting_Godot/resource/sprite/effects/Explosion.png
deleted file mode 100644
index dab1f49..0000000
--- a/DungeonShooting_Godot/resource/sprite/effects/Explosion.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/effects/Explosion.png.import b/DungeonShooting_Godot/resource/sprite/effects/Explosion.png.import
deleted file mode 100644
index 27c5b4b..0000000
--- a/DungeonShooting_Godot/resource/sprite/effects/Explosion.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://d8ot2wrdoe4j"
-path="res://.godot/imported/Explosion.png-f6ade742e1df9fc7ae3c5f68bc2d2284.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/effects/Explosion.png"
-dest_files=["res://.godot/imported/Explosion.png-f6ade742e1df9fc7ae3c5f68bc2d2284.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/effects/common/Smoke3.png b/DungeonShooting_Godot/resource/sprite/effects/common/Smoke3.png
new file mode 100644
index 0000000..bbb2085
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/common/Smoke3.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/effects/common/Smoke3.png.import b/DungeonShooting_Godot/resource/sprite/effects/common/Smoke3.png.import
new file mode 100644
index 0000000..bd57c62
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/common/Smoke3.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b07cxsgvpwlct"
+path="res://.godot/imported/Smoke3.png-3eaca71646686237d637b81d23e98c2c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/effects/common/Smoke3.png"
+dest_files=["res://.godot/imported/Smoke3.png-3eaca71646686237d637b81d23e98c2c.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/effects/common/Smoke4.png b/DungeonShooting_Godot/resource/sprite/effects/common/Smoke4.png
new file mode 100644
index 0000000..89ff217
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/common/Smoke4.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/effects/common/Smoke4.png.import b/DungeonShooting_Godot/resource/sprite/effects/common/Smoke4.png.import
new file mode 100644
index 0000000..87dc2b0
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/common/Smoke4.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://du0f3km5jhxlg"
+path="res://.godot/imported/Smoke4.png-45397cb49e84552c3d72ce5cedf341a4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/effects/common/Smoke4.png"
+dest_files=["res://.godot/imported/Smoke4.png-45397cb49e84552c3d72ce5cedf341a4.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/effects/explode/Explode_circle0002.png b/DungeonShooting_Godot/resource/sprite/effects/explode/Explode_circle0002.png
new file mode 100644
index 0000000..b0fc911
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/explode/Explode_circle0002.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/effects/explode/Explode_circle0002.png.import b/DungeonShooting_Godot/resource/sprite/effects/explode/Explode_circle0002.png.import
new file mode 100644
index 0000000..af06c61
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/explode/Explode_circle0002.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cusp3s5t7qbuy"
+path="res://.godot/imported/Explode_circle0002.png-8da697809ace63ffc638e19ab8be73b1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/effects/explode/Explode_circle0002.png"
+dest_files=["res://.godot/imported/Explode_circle0002.png-8da697809ace63ffc638e19ab8be73b1.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/effects/explode/Explode_circle0003.png b/DungeonShooting_Godot/resource/sprite/effects/explode/Explode_circle0003.png
new file mode 100644
index 0000000..dab1f49
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/explode/Explode_circle0003.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/effects/explode/Explode_circle0003.png.import b/DungeonShooting_Godot/resource/sprite/effects/explode/Explode_circle0003.png.import
new file mode 100644
index 0000000..92e039c
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/explode/Explode_circle0003.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://4be6mi1egtiy"
+path="res://.godot/imported/Explode_circle0003.png-f9ed8329fdef67dd1a7d2fe4a1d26e36.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/effects/explode/Explode_circle0003.png"
+dest_files=["res://.godot/imported/Explode_circle0003.png-f9ed8329fdef67dd1a7d2fe4a1d26e36.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/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
index f31b88b..e5d9cd2 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
@@ -1802,7 +1802,8 @@
}
///
- /// 根据笔刷 id 在该物体位置绘制液体, 该 id 为 LiquidMaterial 表的 id
+ /// 根据笔刷 id 在该物体位置绘制液体, 该 id 为 LiquidMaterial 表的 id
+ /// 需要清除记录的点就请将 BrushPrevPosition 置为 null
///
public void DrawLiquid(string brushId)
{
@@ -1813,7 +1814,8 @@
}
///
- /// 根据笔刷数据在该物体位置绘制液体
+ /// 根据笔刷数据在该物体位置绘制液体
+ /// 需要清除记录的点就请将 BrushPrevPosition 置为 null
///
public void DrawLiquid(BrushImageData brush)
{
@@ -1826,7 +1828,8 @@
}
///
- /// 根据笔刷 id 在该物体位置绘制液体, 该 id 为 LiquidMaterial 表的 id
+ /// 根据笔刷 id 在该物体位置绘制液体, 该 id 为 LiquidMaterial 表的 id
+ /// 需要清除记录的点就请将 BrushPrevPosition 置为 null
///
public void DrawLiquid(string brushId, Vector2I offset)
{
@@ -1837,7 +1840,8 @@
}
///
- /// 根据笔刷数据在该物体位置绘制液体
+ /// 根据笔刷数据在该物体位置绘制液体
+ /// 需要清除记录的点就请将 BrushPrevPosition 置为 null
///
public void DrawLiquid(BrushImageData brush, Vector2I offset)
{
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/normal/BrushBullet.cs b/DungeonShooting_Godot/src/game/activity/bullet/normal/BrushBullet.cs
index 9413e01..403bdd5 100644
--- a/DungeonShooting_Godot/src/game/activity/bullet/normal/BrushBullet.cs
+++ b/DungeonShooting_Godot/src/game/activity/bullet/normal/BrushBullet.cs
@@ -41,6 +41,11 @@
}
}
+ public override void OnPlayDisappearEffect()
+ {
+ PlayDisappearEffect(ResourcePath.prefab_effect_bullet_BulletDisappear0002_tscn);
+ }
+
public override void OnLeavePool()
{
base.OnLeavePool();
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/normal/Bullet.cs b/DungeonShooting_Godot/src/game/activity/bullet/normal/Bullet.cs
index a444a13..646ab05 100644
--- a/DungeonShooting_Godot/src/game/activity/bullet/normal/Bullet.cs
+++ b/DungeonShooting_Godot/src/game/activity/bullet/normal/Bullet.cs
@@ -116,7 +116,7 @@
if (CurrentBounce > BulletData.BounceCount) //反弹次数超过限制
{
//创建粒子特效
- var effect = ObjectManager.GetPoolItem(ResourcePath.prefab_effect_weapon_BulletSmoke_tscn);
+ var effect = ObjectManager.GetPoolItem(ResourcePath.prefab_effect_bullet_BulletSmoke0001_tscn);
var smoke = (Node2D)effect;
var rotated = AnimatedSprite.Position.Rotated(Rotation);
smoke.GlobalPosition = collision.GetPosition() + new Vector2(0, rotated.Y);
@@ -134,7 +134,7 @@
{
if (o is Role role)
{
- PlayDisappearEffect();
+ OnPlayDisappearEffect();
//击退
if (role is not Player) //目标不是玩家才会触发击退
@@ -162,7 +162,7 @@
///
public virtual void OnMaxDistance()
{
- PlayDisappearEffect();
+ OnPlayDisappearEffect();
DoReclaim();
}
@@ -171,14 +171,14 @@
///
public virtual void OnLimeOver()
{
- PlayDisappearEffect();
+ OnPlayDisappearEffect();
DoReclaim();
}
protected override void OnFallToGround()
{
//落地销毁
- PlayDisappearEffect();
+ OnPlayDisappearEffect();
DoReclaim();
}
@@ -204,9 +204,17 @@
///
/// 播放子弹消失的特效
///
- public virtual void PlayDisappearEffect()
+ public virtual void OnPlayDisappearEffect()
{
- var effect = ObjectManager.GetPoolItem(ResourcePath.prefab_effect_weapon_BulletDisappear_tscn);
+ PlayDisappearEffect(ResourcePath.prefab_effect_bullet_BulletDisappear0001_tscn);
+ }
+
+ ///
+ /// 播放子弹消失特效
+ ///
+ public void PlayDisappearEffect(string path)
+ {
+ var effect = ObjectManager.GetPoolItem(path);
var node = (Node2D)effect;
node.GlobalPosition = AnimatedSprite.GlobalPosition;
node.AddToActivityRoot(RoomLayerEnum.YSortLayer);
diff --git a/DungeonShooting_Godot/src/game/activity/role/Role.cs b/DungeonShooting_Godot/src/game/activity/role/Role.cs
index aea85db..2facc09 100644
--- a/DungeonShooting_Godot/src/game/activity/role/Role.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/Role.cs
@@ -1290,7 +1290,7 @@
var attackLayer = bullet.AttackLayer;
if (CollisionWithMask(attackLayer)) //是攻击玩家的子弹
{
- bullet.PlayDisappearEffect();
+ bullet.OnPlayDisappearEffect();
bullet.Destroy();
}
}
diff --git a/DungeonShooting_Godot/src/game/activity/weapon/knife/Knife.cs b/DungeonShooting_Godot/src/game/activity/weapon/knife/Knife.cs
index e0a67d6..a54ce5a 100644
--- a/DungeonShooting_Godot/src/game/activity/weapon/knife/Knife.cs
+++ b/DungeonShooting_Godot/src/game/activity/weapon/knife/Knife.cs
@@ -167,7 +167,7 @@
if (TriggerRole != null && TriggerRole.CollisionWithMask(attackLayer)) //是攻击玩家的子弹
{
//反弹子弹
- bullet.PlayDisappearEffect();
+ bullet.OnPlayDisappearEffect();
bullet.MoveController.ScaleAllVelocity(-1);
bullet.Rotation += Mathf.Pi;
bullet.AttackLayer = TriggerRole.AttackLayer;
diff --git a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
index 6314fce..e554c0e 100644
--- a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
+++ b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
@@ -17,12 +17,13 @@
public const string prefab_bullet_normal_Bullet0004_tscn = "res://prefab/bullet/normal/Bullet0004.tscn";
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_bullet_BulletDisappear0001_tscn = "res://prefab/effect/bullet/BulletDisappear0001.tscn";
+ public const string prefab_effect_bullet_BulletDisappear0002_tscn = "res://prefab/effect/bullet/BulletDisappear0002.tscn";
+ public const string prefab_effect_bullet_BulletSmoke0001_tscn = "res://prefab/effect/bullet/BulletSmoke0001.tscn";
public const string prefab_effect_common_Effect1_tscn = "res://prefab/effect/common/Effect1.tscn";
- public const string prefab_effect_enemy_EbenyDead0001_tscn = "res://prefab/effect/enemy/EbenyDead0001.tscn";
- public const string prefab_effect_enemy_EbenyDead0002_tscn = "res://prefab/effect/enemy/EbenyDead0002.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_enemy_EnemyDead0001_tscn = "res://prefab/effect/enemy/EnemyDead0001.tscn";
+ public const string prefab_effect_enemy_EnemyDead0002_tscn = "res://prefab/effect/enemy/EnemyDead0002.tscn";
public const string prefab_effect_weapon_MeleeAttack1_tscn = "res://prefab/effect/weapon/MeleeAttack1.tscn";
public const string prefab_effect_weapon_MeleeAttack2_tscn = "res://prefab/effect/weapon/MeleeAttack2.tscn";
public const string prefab_effect_weapon_ShotFire_tscn = "res://prefab/effect/weapon/ShotFire.tscn";
@@ -58,7 +59,6 @@
public const string prefab_shell_Shell0003_tscn = "res://prefab/shell/Shell0003.tscn";
public const string prefab_shell_Shell0004_tscn = "res://prefab/shell/Shell0004.tscn";
public const string prefab_test_MoveComponent_tscn = "res://prefab/test/MoveComponent.tscn";
- public const string prefab_test_TestActivity_tscn = "res://prefab/test/TestActivity.tscn";
public const string prefab_ui_BottomTips_tscn = "res://prefab/ui/BottomTips.tscn";
public const string prefab_ui_Debugger_tscn = "res://prefab/ui/Debugger.tscn";
public const string prefab_ui_EditorTips_tscn = "res://prefab/ui/EditorTips.tscn";
@@ -175,12 +175,15 @@
public const string resource_sprite_brush_Brush1_png = "res://resource/sprite/brush/Brush1.png";
public const string resource_sprite_brush_Brush2_png = "res://resource/sprite/brush/Brush2.png";
public const string resource_sprite_brush_Brush3_png = "res://resource/sprite/brush/Brush3.png";
+ public const string resource_sprite_brush_Brush4_png = "res://resource/sprite/brush/Brush4.png";
+ public const string resource_sprite_brush_Brush5_png = "res://resource/sprite/brush/Brush5.png";
public const string resource_sprite_bullet_laser_Laser0001_png = "res://resource/sprite/bullet/laser/Laser0001.png";
public const string resource_sprite_bullet_normal_arrow_png = "res://resource/sprite/bullet/normal/arrow.png";
public const string resource_sprite_bullet_normal_bullet0001_png = "res://resource/sprite/bullet/normal/bullet0001.png";
public const string resource_sprite_bullet_normal_bullet0002_png = "res://resource/sprite/bullet/normal/bullet0002.png";
public const string resource_sprite_bullet_normal_bullet0003_png = "res://resource/sprite/bullet/normal/bullet0003.png";
public const string resource_sprite_bullet_normal_bullet0004_png = "res://resource/sprite/bullet/normal/bullet0004.png";
+ public const string resource_sprite_bullet_normal_bullet0005_png = "res://resource/sprite/bullet/normal/bullet0005.png";
public const string resource_sprite_bullet_normal_bullet2_png = "res://resource/sprite/bullet/normal/bullet2.png";
public const string resource_sprite_effects_Circle_png = "res://resource/sprite/effects/Circle.png";
public const string resource_sprite_effects_Circle2_png = "res://resource/sprite/effects/Circle2.png";
@@ -189,6 +192,7 @@
public const string resource_sprite_effects_common_Effect1_png = "res://resource/sprite/effects/common/Effect1.png";
public const string resource_sprite_effects_common_Smoke_png = "res://resource/sprite/effects/common/Smoke.png";
public const string resource_sprite_effects_common_Smoke2_png = "res://resource/sprite/effects/common/Smoke2.png";
+ public const string resource_sprite_effects_common_Smoke3_png = "res://resource/sprite/effects/common/Smoke3.png";
public const string resource_sprite_effects_explode_Explode_circle0001_png = "res://resource/sprite/effects/explode/Explode_circle0001.png";
public const string resource_sprite_effects_explode_Explode_line0001_png = "res://resource/sprite/effects/explode/Explode_line0001.png";
public const string resource_sprite_effects_explode_Explode_pit0001_png = "res://resource/sprite/effects/explode/Explode_pit0001.png";
@@ -306,6 +310,7 @@
public const string resource_sprite_ui_mapEditorTools_DoorDragButton_png = "res://resource/sprite/ui/mapEditorTools/DoorDragButton.png";
public const string resource_sprite_ui_mapEditorTools_DoorDragButton_down_png = "res://resource/sprite/ui/mapEditorTools/DoorDragButton_down.png";
public const string resource_sprite_ui_mapEditorTools_DoorDragButton_hover_png = "res://resource/sprite/ui/mapEditorTools/DoorDragButton_hover.png";
+ public const string resource_sprite_ui_roomMap_MapBar_png = "res://resource/sprite/ui/roomMap/MapBar.png";
public const string resource_sprite_ui_roomUI_ChargeProgress_png = "res://resource/sprite/ui/roomUI/ChargeProgress.png";
public const string resource_sprite_ui_roomUI_ChargeProgressBar_png = "res://resource/sprite/ui/roomUI/ChargeProgressBar.png";
public const string resource_sprite_ui_roomUI_Cooldown_png = "res://resource/sprite/ui/roomUI/Cooldown.png";
@@ -315,7 +320,6 @@
public const string resource_sprite_ui_roomUI_Life_empty_png = "res://resource/sprite/ui/roomUI/Life_empty.png";
public const string resource_sprite_ui_roomUI_Life_full_png = "res://resource/sprite/ui/roomUI/Life_full.png";
public const string resource_sprite_ui_roomUI_Life_half_png = "res://resource/sprite/ui/roomUI/Life_half.png";
- public const string resource_sprite_ui_roomUI_MapBar_png = "res://resource/sprite/ui/roomUI/MapBar.png";
public const string resource_sprite_ui_roomUI_Panel_png = "res://resource/sprite/ui/roomUI/Panel.png";
public const string resource_sprite_ui_roomUI_Panel2_png = "res://resource/sprite/ui/roomUI/Panel2.png";
public const string resource_sprite_ui_roomUI_ReloadBar_png = "res://resource/sprite/ui/roomUI/ReloadBar.png";
@@ -350,6 +354,7 @@
public const string resource_spriteFrames_bullet_Bullet0002_tres = "res://resource/spriteFrames/bullet/Bullet0002.tres";
public const string resource_spriteFrames_bullet_Bullet0003_tres = "res://resource/spriteFrames/bullet/Bullet0003.tres";
public const string resource_spriteFrames_bullet_Bullet0004_tres = "res://resource/spriteFrames/bullet/Bullet0004.tres";
+ public const string resource_spriteFrames_bullet_Bullet0005_tres = "res://resource/spriteFrames/bullet/Bullet0005.tres";
public const string resource_spriteFrames_effect_KnifeHit1_tres = "res://resource/spriteFrames/effect/KnifeHit1.tres";
public const string resource_spriteFrames_effect_weapon_Collision1_tres = "res://resource/spriteFrames/effect/weapon/Collision1.tres";
public const string resource_spriteFrames_other_RoomDoor_E_Down_tres = "res://resource/spriteFrames/other/RoomDoor_E_Down.tres";