diff --git a/DungeonShooting_Godot/DungeonShooting.csproj b/DungeonShooting_Godot/DungeonShooting.csproj
index 543224c..4229695 100644
--- a/DungeonShooting_Godot/DungeonShooting.csproj
+++ b/DungeonShooting_Godot/DungeonShooting.csproj
@@ -6,6 +6,7 @@
+
\ No newline at end of file
diff --git a/DungeonShooting_Godot/excel/excelFile/ActivityBase.xlsx b/DungeonShooting_Godot/excel/excelFile/ActivityBase.xlsx
index 25b56a8..493e10a 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/AiAttackAttr.xlsx b/DungeonShooting_Godot/excel/excelFile/AiAttackAttr.xlsx
index e9dfc21..c694b8d 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 d41a57b..e92fca5 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 f5b06da..d2b3795 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 ea9efa2..72f5665 100644
--- a/DungeonShooting_Godot/excel/excelFile/WeaponBase.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/WeaponBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/prefab/bullet/Bullet0001.tscn b/DungeonShooting_Godot/prefab/bullet/Bullet0001.tscn
deleted file mode 100644
index 713d70f..0000000
--- a/DungeonShooting_Godot/prefab/bullet/Bullet0001.tscn
+++ /dev/null
@@ -1,72 +0,0 @@
-[gd_scene load_steps=8 format=3 uid="uid://bj4kmvt8jg1cf"]
-
-[ext_resource type="Script" path="res://src/game/activity/bullet/Bullet.cs" id="1_3d3df"]
-[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_mxa72"]
-[ext_resource type="Texture2D" uid="uid://bu0b11hiuecxy" path="res://resource/sprite/bullet/bullet0001.png" id="3_pm4pr"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_w5w0i"]
-resource_local_to_scene = true
-shader = ExtResource("2_mxa72")
-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 = false
-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_qhkgc"]
-resource_local_to_scene = true
-shader = ExtResource("2_mxa72")
-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="SpriteFrames" id="SpriteFrames_5wvmf"]
-animations = [{
-"frames": [{
-"duration": 1.0,
-"texture": ExtResource("3_pm4pr")
-}],
-"loop": true,
-"name": &"default",
-"speed": 5.0
-}]
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_lcqb8"]
-size = Vector2(9, 4)
-
-[node name="Bullet0001" type="CharacterBody2D" node_paths=PackedStringArray("CollisionArea", "ShadowSprite", "AnimatedSprite", "Collision")]
-collision_layer = 2
-script = ExtResource("1_3d3df")
-CollisionArea = NodePath("CollisionArea")
-ShadowSprite = NodePath("ShadowSprite")
-AnimatedSprite = NodePath("AnimatedSprite")
-Collision = NodePath("Collision")
-
-[node name="ShadowSprite" type="Sprite2D" parent="."]
-z_index = -1
-material = SubResource("ShaderMaterial_w5w0i")
-
-[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
-modulate = Color(1.6, 1.6, 1.6, 1)
-material = SubResource("ShaderMaterial_qhkgc")
-sprite_frames = SubResource("SpriteFrames_5wvmf")
-
-[node name="CollisionArea" type="Area2D" parent="."]
-visible = false
-collision_layer = 0
-collision_mask = 0
-monitorable = false
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CollisionArea"]
-position = Vector2(2.93353, 0)
-shape = SubResource("RectangleShape2D_lcqb8")
-
-[node name="Collision" type="CollisionShape2D" parent="."]
-position = Vector2(1.5, 0)
-shape = SubResource("RectangleShape2D_lcqb8")
diff --git a/DungeonShooting_Godot/prefab/bullet/Bullet0002.tscn b/DungeonShooting_Godot/prefab/bullet/Bullet0002.tscn
deleted file mode 100644
index 27cfff5..0000000
--- a/DungeonShooting_Godot/prefab/bullet/Bullet0002.tscn
+++ /dev/null
@@ -1,63 +0,0 @@
-[gd_scene load_steps=8 format=3 uid="uid://bqkj0rn72ppge"]
-
-[ext_resource type="Script" path="res://src/game/activity/bullet/Bullet.cs" id="1_hepay"]
-[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_0n2yg"]
-[ext_resource type="SpriteFrames" uid="uid://bpeodjqiy3mil" path="res://resource/spriteFrames/bullet/Bullet0002.tres" id="3_ldd0h"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_v77gw"]
-resource_local_to_scene = true
-shader = ExtResource("2_0n2yg")
-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 = false
-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_p0wfd"]
-resource_local_to_scene = true
-shader = ExtResource("2_0n2yg")
-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="CircleShape2D" id="CircleShape2D_0vxfv"]
-radius = 3.0
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_e2yn3"]
-radius = 3.0
-
-[node name="Bullet0002" type="CharacterBody2D" node_paths=PackedStringArray("CollisionArea", "ShadowSprite", "AnimatedSprite", "Collision")]
-collision_layer = 2
-script = ExtResource("1_hepay")
-CollisionArea = NodePath("CollisionArea")
-ShadowSprite = NodePath("ShadowSprite")
-AnimatedSprite = NodePath("AnimatedSprite")
-Collision = NodePath("Collision")
-
-[node name="ShadowSprite" type="Sprite2D" parent="."]
-z_index = -1
-material = SubResource("ShaderMaterial_v77gw")
-
-[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
-modulate = Color(1.6, 1.6, 1.6, 1)
-material = SubResource("ShaderMaterial_p0wfd")
-sprite_frames = ExtResource("3_ldd0h")
-
-[node name="CollisionArea" type="Area2D" parent="."]
-visible = false
-collision_layer = 0
-collision_mask = 0
-monitorable = false
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CollisionArea"]
-position = Vector2(-2.38419e-07, 0)
-shape = SubResource("CircleShape2D_0vxfv")
-
-[node name="Collision" type="CollisionShape2D" parent="."]
-shape = SubResource("CircleShape2D_e2yn3")
diff --git a/DungeonShooting_Godot/prefab/bullet/Bullet0003.tscn b/DungeonShooting_Godot/prefab/bullet/Bullet0003.tscn
deleted file mode 100644
index 10ba78b..0000000
--- a/DungeonShooting_Godot/prefab/bullet/Bullet0003.tscn
+++ /dev/null
@@ -1,59 +0,0 @@
-[gd_scene load_steps=7 format=3 uid="uid://ee24ocwk8snj"]
-
-[ext_resource type="Script" path="res://src/game/activity/bullet/Bullet.cs" id="1_h6lfm"]
-[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_bteri"]
-[ext_resource type="SpriteFrames" uid="uid://bcnhyin0aufl1" path="res://resource/spriteFrames/bullet/Bullet0003.tres" id="3_qvo0u"]
-
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_v77gw"]
-resource_local_to_scene = true
-shader = ExtResource("2_bteri")
-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 = false
-shader_parameter/outline_color = Color(0, 0, 0, 1)
-shader_parameter/outline_rainbow = false
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_p0wfd"]
-resource_local_to_scene = true
-shader = ExtResource("2_bteri")
-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
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_c0onq"]
-size = Vector2(6, 3.125)
-
-[node name="Bullet0003" type="CharacterBody2D" node_paths=PackedStringArray("CollisionArea", "ShadowSprite", "AnimatedSprite", "Collision")]
-collision_layer = 2
-script = ExtResource("1_h6lfm")
-CollisionArea = NodePath("CollisionArea")
-ShadowSprite = NodePath("ShadowSprite")
-AnimatedSprite = NodePath("AnimatedSprite")
-Collision = NodePath("Collision")
-
-[node name="ShadowSprite" type="Sprite2D" parent="."]
-z_index = -1
-material = SubResource("ShaderMaterial_v77gw")
-
-[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
-modulate = Color(1.6, 1.6, 1.6, 1)
-material = SubResource("ShaderMaterial_p0wfd")
-sprite_frames = ExtResource("3_qvo0u")
-
-[node name="CollisionArea" type="Area2D" parent="."]
-visible = false
-collision_layer = 0
-collision_mask = 0
-monitorable = false
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CollisionArea"]
-position = Vector2(1, 0)
-shape = SubResource("RectangleShape2D_c0onq")
-
-[node name="Collision" type="CollisionShape2D" parent="."]
-shape = SubResource("RectangleShape2D_c0onq")
diff --git a/DungeonShooting_Godot/prefab/bullet/laser/Laser0001.tscn b/DungeonShooting_Godot/prefab/bullet/laser/Laser0001.tscn
index 3648437..5117e12 100644
--- a/DungeonShooting_Godot/prefab/bullet/laser/Laser0001.tscn
+++ b/DungeonShooting_Godot/prefab/bullet/laser/Laser0001.tscn
@@ -1,7 +1,7 @@
[gd_scene load_steps=4 format=3 uid="uid://d1q8jjtgi2wpu"]
[ext_resource type="Script" path="res://src/game/activity/bullet/laser/Laser.cs" id="1_3w0rp"]
-[ext_resource type="Texture2D" uid="uid://clfpbq1c1ilp1" path="res://resource/sprite/bullet/Laser0001.png" id="2_uqalj"]
+[ext_resource type="Texture2D" uid="uid://clfpbq1c1ilp1" path="res://resource/sprite/bullet/laser/Laser0001.png" id="2_uqalj"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_l4vuk"]
resource_local_to_scene = true
diff --git a/DungeonShooting_Godot/prefab/bullet/normal/Bullet0001.tscn b/DungeonShooting_Godot/prefab/bullet/normal/Bullet0001.tscn
new file mode 100644
index 0000000..20aab1f
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/bullet/normal/Bullet0001.tscn
@@ -0,0 +1,72 @@
+[gd_scene load_steps=8 format=3 uid="uid://bj4kmvt8jg1cf"]
+
+[ext_resource type="Script" path="res://src/game/activity/bullet/normal/Bullet.cs" id="1_3d3df"]
+[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_mxa72"]
+[ext_resource type="Texture2D" uid="uid://bu0b11hiuecxy" path="res://resource/sprite/bullet/normal/bullet0001.png" id="3_pm4pr"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_w5w0i"]
+resource_local_to_scene = true
+shader = ExtResource("2_mxa72")
+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 = false
+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_qhkgc"]
+resource_local_to_scene = true
+shader = ExtResource("2_mxa72")
+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="SpriteFrames" id="SpriteFrames_5wvmf"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("3_pm4pr")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_lcqb8"]
+size = Vector2(9, 4)
+
+[node name="Bullet0001" type="CharacterBody2D" node_paths=PackedStringArray("CollisionArea", "ShadowSprite", "AnimatedSprite", "Collision")]
+collision_layer = 2
+script = ExtResource("1_3d3df")
+CollisionArea = NodePath("CollisionArea")
+ShadowSprite = NodePath("ShadowSprite")
+AnimatedSprite = NodePath("AnimatedSprite")
+Collision = NodePath("Collision")
+
+[node name="ShadowSprite" type="Sprite2D" parent="."]
+z_index = -1
+material = SubResource("ShaderMaterial_w5w0i")
+
+[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
+modulate = Color(1.6, 1.6, 1.6, 1)
+material = SubResource("ShaderMaterial_qhkgc")
+sprite_frames = SubResource("SpriteFrames_5wvmf")
+
+[node name="CollisionArea" type="Area2D" parent="."]
+visible = false
+collision_layer = 0
+collision_mask = 0
+monitorable = false
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="CollisionArea"]
+position = Vector2(2.93353, 0)
+shape = SubResource("RectangleShape2D_lcqb8")
+
+[node name="Collision" type="CollisionShape2D" parent="."]
+position = Vector2(1.5, 0)
+shape = SubResource("RectangleShape2D_lcqb8")
diff --git a/DungeonShooting_Godot/prefab/bullet/normal/Bullet0002.tscn b/DungeonShooting_Godot/prefab/bullet/normal/Bullet0002.tscn
new file mode 100644
index 0000000..5366ce1
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/bullet/normal/Bullet0002.tscn
@@ -0,0 +1,63 @@
+[gd_scene load_steps=8 format=3 uid="uid://bqkj0rn72ppge"]
+
+[ext_resource type="Script" path="res://src/game/activity/bullet/normal/Bullet.cs" id="1_hepay"]
+[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_0n2yg"]
+[ext_resource type="SpriteFrames" uid="uid://bpeodjqiy3mil" path="res://resource/spriteFrames/bullet/Bullet0002.tres" id="3_ldd0h"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_v77gw"]
+resource_local_to_scene = true
+shader = ExtResource("2_0n2yg")
+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 = false
+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_p0wfd"]
+resource_local_to_scene = true
+shader = ExtResource("2_0n2yg")
+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="CircleShape2D" id="CircleShape2D_0vxfv"]
+radius = 3.0
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_e2yn3"]
+radius = 3.0
+
+[node name="Bullet0002" type="CharacterBody2D" node_paths=PackedStringArray("CollisionArea", "ShadowSprite", "AnimatedSprite", "Collision")]
+collision_layer = 2
+script = ExtResource("1_hepay")
+CollisionArea = NodePath("CollisionArea")
+ShadowSprite = NodePath("ShadowSprite")
+AnimatedSprite = NodePath("AnimatedSprite")
+Collision = NodePath("Collision")
+
+[node name="ShadowSprite" type="Sprite2D" parent="."]
+z_index = -1
+material = SubResource("ShaderMaterial_v77gw")
+
+[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
+modulate = Color(1.6, 1.6, 1.6, 1)
+material = SubResource("ShaderMaterial_p0wfd")
+sprite_frames = ExtResource("3_ldd0h")
+
+[node name="CollisionArea" type="Area2D" parent="."]
+visible = false
+collision_layer = 0
+collision_mask = 0
+monitorable = false
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="CollisionArea"]
+position = Vector2(-2.38419e-07, 0)
+shape = SubResource("CircleShape2D_0vxfv")
+
+[node name="Collision" type="CollisionShape2D" parent="."]
+shape = SubResource("CircleShape2D_e2yn3")
diff --git a/DungeonShooting_Godot/prefab/bullet/normal/Bullet0003.tscn b/DungeonShooting_Godot/prefab/bullet/normal/Bullet0003.tscn
new file mode 100644
index 0000000..9c2a1a5
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/bullet/normal/Bullet0003.tscn
@@ -0,0 +1,59 @@
+[gd_scene load_steps=7 format=3 uid="uid://ee24ocwk8snj"]
+
+[ext_resource type="Script" path="res://src/game/activity/bullet/normal/Bullet.cs" id="1_h6lfm"]
+[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_bteri"]
+[ext_resource type="SpriteFrames" uid="uid://bcnhyin0aufl1" path="res://resource/spriteFrames/bullet/Bullet0003.tres" id="3_qvo0u"]
+
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_v77gw"]
+resource_local_to_scene = true
+shader = ExtResource("2_bteri")
+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 = false
+shader_parameter/outline_color = Color(0, 0, 0, 1)
+shader_parameter/outline_rainbow = false
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_p0wfd"]
+resource_local_to_scene = true
+shader = ExtResource("2_bteri")
+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
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_c0onq"]
+size = Vector2(6, 3.125)
+
+[node name="Bullet0003" type="CharacterBody2D" node_paths=PackedStringArray("CollisionArea", "ShadowSprite", "AnimatedSprite", "Collision")]
+collision_layer = 2
+script = ExtResource("1_h6lfm")
+CollisionArea = NodePath("CollisionArea")
+ShadowSprite = NodePath("ShadowSprite")
+AnimatedSprite = NodePath("AnimatedSprite")
+Collision = NodePath("Collision")
+
+[node name="ShadowSprite" type="Sprite2D" parent="."]
+z_index = -1
+material = SubResource("ShaderMaterial_v77gw")
+
+[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
+modulate = Color(1.6, 1.6, 1.6, 1)
+material = SubResource("ShaderMaterial_p0wfd")
+sprite_frames = ExtResource("3_qvo0u")
+
+[node name="CollisionArea" type="Area2D" parent="."]
+visible = false
+collision_layer = 0
+collision_mask = 0
+monitorable = false
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="CollisionArea"]
+position = Vector2(1, 0)
+shape = SubResource("RectangleShape2D_c0onq")
+
+[node name="Collision" type="CollisionShape2D" parent="."]
+shape = SubResource("RectangleShape2D_c0onq")
diff --git a/DungeonShooting_Godot/resource/config/ActivityBase.json b/DungeonShooting_Godot/resource/config/ActivityBase.json
index 023890f..f411760 100644
--- a/DungeonShooting_Godot/resource/config/ActivityBase.json
+++ b/DungeonShooting_Godot/resource/config/ActivityBase.json
@@ -105,7 +105,7 @@
"Name": "",
"Intro": "",
"Details": "",
- "Prefab": "res://prefab/bullet/Bullet0001.tscn",
+ "Prefab": "res://prefab/bullet/normal/Bullet0001.tscn",
"Icon": "",
"ShowInMapEditor": false
},
@@ -115,7 +115,7 @@
"Name": "",
"Intro": "",
"Details": "",
- "Prefab": "res://prefab/bullet/Bullet0002.tscn",
+ "Prefab": "res://prefab/bullet/normal/Bullet0002.tscn",
"Icon": "",
"ShowInMapEditor": false
},
@@ -125,7 +125,7 @@
"Name": "",
"Intro": "",
"Details": "",
- "Prefab": "res://prefab/bullet/Bullet0003.tscn",
+ "Prefab": "res://prefab/bullet/normal/Bullet0003.tscn",
"Icon": "",
"ShowInMapEditor": false
},
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/Laser0001.png b/DungeonShooting_Godot/resource/sprite/bullet/Laser0001.png
deleted file mode 100644
index 9338ede..0000000
--- a/DungeonShooting_Godot/resource/sprite/bullet/Laser0001.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/Laser0001.png.import b/DungeonShooting_Godot/resource/sprite/bullet/Laser0001.png.import
deleted file mode 100644
index 1e0f02f..0000000
--- a/DungeonShooting_Godot/resource/sprite/bullet/Laser0001.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://clfpbq1c1ilp1"
-path="res://.godot/imported/Laser0001.png-e2d7f2c04ceb942be096b5c64e04bad8.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/bullet/Laser0001.png"
-dest_files=["res://.godot/imported/Laser0001.png-e2d7f2c04ceb942be096b5c64e04bad8.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/bullet/arrow.png b/DungeonShooting_Godot/resource/sprite/bullet/arrow.png
deleted file mode 100644
index 4baebfb..0000000
--- a/DungeonShooting_Godot/resource/sprite/bullet/arrow.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/arrow.png.import b/DungeonShooting_Godot/resource/sprite/bullet/arrow.png.import
deleted file mode 100644
index 18616dd..0000000
--- a/DungeonShooting_Godot/resource/sprite/bullet/arrow.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cjb4rq1qavfm6"
-path="res://.godot/imported/arrow.png-5f9f0a3c4c243acf30e833eb04add206.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/bullet/arrow.png"
-dest_files=["res://.godot/imported/arrow.png-5f9f0a3c4c243acf30e833eb04add206.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/bullet/bullet0001.png b/DungeonShooting_Godot/resource/sprite/bullet/bullet0001.png
deleted file mode 100644
index 5b488de..0000000
--- a/DungeonShooting_Godot/resource/sprite/bullet/bullet0001.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/bullet0001.png.import b/DungeonShooting_Godot/resource/sprite/bullet/bullet0001.png.import
deleted file mode 100644
index fe2ba90..0000000
--- a/DungeonShooting_Godot/resource/sprite/bullet/bullet0001.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bu0b11hiuecxy"
-path="res://.godot/imported/bullet0001.png-09e29b083f51e2b282ac1fb1dd682734.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/bullet/bullet0001.png"
-dest_files=["res://.godot/imported/bullet0001.png-09e29b083f51e2b282ac1fb1dd682734.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/bullet/bullet0002.png b/DungeonShooting_Godot/resource/sprite/bullet/bullet0002.png
deleted file mode 100644
index a76c266..0000000
--- a/DungeonShooting_Godot/resource/sprite/bullet/bullet0002.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/bullet0002.png.import b/DungeonShooting_Godot/resource/sprite/bullet/bullet0002.png.import
deleted file mode 100644
index 90b0c71..0000000
--- a/DungeonShooting_Godot/resource/sprite/bullet/bullet0002.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://ctsvj4y1t538u"
-path="res://.godot/imported/bullet0002.png-5a53e3706ec2ef023e52e256612c2c94.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/bullet/bullet0002.png"
-dest_files=["res://.godot/imported/bullet0002.png-5a53e3706ec2ef023e52e256612c2c94.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/bullet/bullet0003.png b/DungeonShooting_Godot/resource/sprite/bullet/bullet0003.png
deleted file mode 100644
index 14a69ff..0000000
--- a/DungeonShooting_Godot/resource/sprite/bullet/bullet0003.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/bullet0003.png.import b/DungeonShooting_Godot/resource/sprite/bullet/bullet0003.png.import
deleted file mode 100644
index 808d9f3..0000000
--- a/DungeonShooting_Godot/resource/sprite/bullet/bullet0003.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cs6pa7h8ffvy4"
-path="res://.godot/imported/bullet0003.png-968c6a657388df80893fe68898e87dae.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/bullet/bullet0003.png"
-dest_files=["res://.godot/imported/bullet0003.png-968c6a657388df80893fe68898e87dae.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/bullet/bullet2.png b/DungeonShooting_Godot/resource/sprite/bullet/bullet2.png
deleted file mode 100644
index 964f292..0000000
--- a/DungeonShooting_Godot/resource/sprite/bullet/bullet2.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/bullet2.png.import b/DungeonShooting_Godot/resource/sprite/bullet/bullet2.png.import
deleted file mode 100644
index 79038a8..0000000
--- a/DungeonShooting_Godot/resource/sprite/bullet/bullet2.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://o3iq4myj72q0"
-path="res://.godot/imported/bullet2.png-6ca9527061677971732c8192cb1aa209.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/bullet/bullet2.png"
-dest_files=["res://.godot/imported/bullet2.png-6ca9527061677971732c8192cb1aa209.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/bullet/laser/Laser0001.png b/DungeonShooting_Godot/resource/sprite/bullet/laser/Laser0001.png
new file mode 100644
index 0000000..9338ede
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/bullet/laser/Laser0001.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/laser/Laser0001.png.import b/DungeonShooting_Godot/resource/sprite/bullet/laser/Laser0001.png.import
new file mode 100644
index 0000000..3fdff0b
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/bullet/laser/Laser0001.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://clfpbq1c1ilp1"
+path="res://.godot/imported/Laser0001.png-a310e56cc700e65c7853874d9765878b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/bullet/laser/Laser0001.png"
+dest_files=["res://.godot/imported/Laser0001.png-a310e56cc700e65c7853874d9765878b.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/bullet/normal/arrow.png b/DungeonShooting_Godot/resource/sprite/bullet/normal/arrow.png
new file mode 100644
index 0000000..4baebfb
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/bullet/normal/arrow.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/normal/arrow.png.import b/DungeonShooting_Godot/resource/sprite/bullet/normal/arrow.png.import
new file mode 100644
index 0000000..ffa58c4
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/bullet/normal/arrow.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cjb4rq1qavfm6"
+path="res://.godot/imported/arrow.png-e6292bc0b86a2f51ddcbf6755de06ee0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/bullet/normal/arrow.png"
+dest_files=["res://.godot/imported/arrow.png-e6292bc0b86a2f51ddcbf6755de06ee0.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/bullet/normal/bullet0001.png b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0001.png
new file mode 100644
index 0000000..5b488de
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0001.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0001.png.import b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0001.png.import
new file mode 100644
index 0000000..e261be8
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0001.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bu0b11hiuecxy"
+path="res://.godot/imported/bullet0001.png-7d68281aea18b984211b806879504cbe.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/bullet/normal/bullet0001.png"
+dest_files=["res://.godot/imported/bullet0001.png-7d68281aea18b984211b806879504cbe.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/bullet/normal/bullet0002.png b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0002.png
new file mode 100644
index 0000000..a76c266
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0002.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0002.png.import b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0002.png.import
new file mode 100644
index 0000000..1a5e295
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0002.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ctsvj4y1t538u"
+path="res://.godot/imported/bullet0002.png-710d9bc1a4f134ae89c80c46b8499940.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/bullet/normal/bullet0002.png"
+dest_files=["res://.godot/imported/bullet0002.png-710d9bc1a4f134ae89c80c46b8499940.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/bullet/normal/bullet0003.png b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0003.png
new file mode 100644
index 0000000..14a69ff
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0003.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0003.png.import b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0003.png.import
new file mode 100644
index 0000000..1408d33
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet0003.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cs6pa7h8ffvy4"
+path="res://.godot/imported/bullet0003.png-0b9ca4e8c8186f2c99bb18564bebed46.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/bullet/normal/bullet0003.png"
+dest_files=["res://.godot/imported/bullet0003.png-0b9ca4e8c8186f2c99bb18564bebed46.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/bullet/normal/bullet2.png b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet2.png
new file mode 100644
index 0000000..964f292
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet2.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet2.png.import b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet2.png.import
new file mode 100644
index 0000000..d48c9d6
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/bullet/normal/bullet2.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://o3iq4myj72q0"
+path="res://.godot/imported/bullet2.png-373c2adfe18998d5a55ebea0eaea27a9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/bullet/normal/bullet2.png"
+dest_files=["res://.godot/imported/bullet2.png-373c2adfe18998d5a55ebea0eaea27a9.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/bullet/Bullet0001.tres b/DungeonShooting_Godot/resource/spriteFrames/bullet/Bullet0001.tres
index e12a271..990889c 100644
--- a/DungeonShooting_Godot/resource/spriteFrames/bullet/Bullet0001.tres
+++ b/DungeonShooting_Godot/resource/spriteFrames/bullet/Bullet0001.tres
@@ -1,6 +1,6 @@
[gd_resource type="SpriteFrames" load_steps=2 format=3 uid="uid://baoxep7vami72"]
-[ext_resource type="Texture2D" uid="uid://bu0b11hiuecxy" path="res://resource/sprite/bullet/bullet0001.png" id="1_ktu7r"]
+[ext_resource type="Texture2D" uid="uid://bu0b11hiuecxy" path="res://resource/sprite/bullet/normal/bullet0001.png" id="1_ktu7r"]
diff --git a/DungeonShooting_Godot/resource/spriteFrames/bullet/Bullet0002.tres b/DungeonShooting_Godot/resource/spriteFrames/bullet/Bullet0002.tres
index f5cc160..140018b 100644
--- a/DungeonShooting_Godot/resource/spriteFrames/bullet/Bullet0002.tres
+++ b/DungeonShooting_Godot/resource/spriteFrames/bullet/Bullet0002.tres
@@ -1,6 +1,6 @@
[gd_resource type="SpriteFrames" load_steps=2 format=3 uid="uid://bpeodjqiy3mil"]
-[ext_resource type="Texture2D" uid="uid://ctsvj4y1t538u" path="res://resource/sprite/bullet/bullet0002.png" id="1_53f3g"]
+[ext_resource type="Texture2D" uid="uid://ctsvj4y1t538u" path="res://resource/sprite/bullet/normal/bullet0002.png" id="1_53f3g"]
[resource]
diff --git a/DungeonShooting_Godot/resource/spriteFrames/bullet/Bullet0003.tres b/DungeonShooting_Godot/resource/spriteFrames/bullet/Bullet0003.tres
index 00f1cc6..79e09eb 100644
--- a/DungeonShooting_Godot/resource/spriteFrames/bullet/Bullet0003.tres
+++ b/DungeonShooting_Godot/resource/spriteFrames/bullet/Bullet0003.tres
@@ -1,6 +1,6 @@
[gd_resource type="SpriteFrames" load_steps=2 format=3 uid="uid://bcnhyin0aufl1"]
-[ext_resource type="Texture2D" uid="uid://cs6pa7h8ffvy4" path="res://resource/sprite/bullet/bullet0003.png" id="1_sl01e"]
+[ext_resource type="Texture2D" uid="uid://cs6pa7h8ffvy4" path="res://resource/sprite/bullet/normal/bullet0003.png" id="1_sl01e"]
[resource]
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
index 691c138..bec1e3d 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
@@ -186,9 +186,9 @@
_activityRegisterMap.Add("weapon0006", new RegisterActivityData("res://prefab/weapon/Weapon0006.tscn", ExcelConfig.ActivityBase_Map["weapon0006"]));
_activityRegisterMap.Add("weapon0007", new RegisterActivityData("res://prefab/weapon/Weapon0007.tscn", ExcelConfig.ActivityBase_Map["weapon0007"]));
_activityRegisterMap.Add("weapon0008", new RegisterActivityData("res://prefab/weapon/Weapon0008.tscn", ExcelConfig.ActivityBase_Map["weapon0008"]));
- _activityRegisterMap.Add("bullet0001", new RegisterActivityData("res://prefab/bullet/Bullet0001.tscn", ExcelConfig.ActivityBase_Map["bullet0001"]));
- _activityRegisterMap.Add("bullet0002", new RegisterActivityData("res://prefab/bullet/Bullet0002.tscn", ExcelConfig.ActivityBase_Map["bullet0002"]));
- _activityRegisterMap.Add("bullet0003", new RegisterActivityData("res://prefab/bullet/Bullet0003.tscn", ExcelConfig.ActivityBase_Map["bullet0003"]));
+ _activityRegisterMap.Add("bullet0001", new RegisterActivityData("res://prefab/bullet/normal/Bullet0001.tscn", ExcelConfig.ActivityBase_Map["bullet0001"]));
+ _activityRegisterMap.Add("bullet0002", new RegisterActivityData("res://prefab/bullet/normal/Bullet0002.tscn", ExcelConfig.ActivityBase_Map["bullet0002"]));
+ _activityRegisterMap.Add("bullet0003", new RegisterActivityData("res://prefab/bullet/normal/Bullet0003.tscn", ExcelConfig.ActivityBase_Map["bullet0003"]));
_activityRegisterMap.Add("shell0001", new RegisterActivityData("res://prefab/shell/Shell0001.tscn", ExcelConfig.ActivityBase_Map["shell0001"]));
_activityRegisterMap.Add("shell0002", new RegisterActivityData("res://prefab/shell/Shell0002.tscn", ExcelConfig.ActivityBase_Map["shell0002"]));
_activityRegisterMap.Add("shell0003", new RegisterActivityData("res://prefab/shell/Shell0003.tscn", ExcelConfig.ActivityBase_Map["shell0003"]));
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/Bullet.cs b/DungeonShooting_Godot/src/game/activity/bullet/Bullet.cs
deleted file mode 100644
index bc09905..0000000
--- a/DungeonShooting_Godot/src/game/activity/bullet/Bullet.cs
+++ /dev/null
@@ -1,183 +0,0 @@
-using System.Collections;
-using Godot;
-
-///
-/// 子弹类
-///
-[Tool]
-public partial class Bullet : ActivityObject, IBullet
-{
- ///
- /// 碰撞区域
- ///
- [Export, ExportFillNode]
- public Area2D CollisionArea { get; set; }
-
- ///
- /// 攻击的层级
- ///
- public uint AttackLayer
- {
- get => CollisionArea.CollisionMask;
- set => CollisionArea.CollisionMask = value;
- }
-
- ///
- /// 发射该子弹的武器
- ///
- public Weapon Weapon { get; private set; }
-
- ///
- /// 最小伤害
- ///
- public int MinHarm { get; set; } = 4;
-
- ///
- /// 最大伤害
- ///
- public int MaxHarm { get; set; } = 4;
-
- ///
- /// 发射该子弹的角色
- ///
- public Role TriggerRole { get; private set; }
-
- // 最大飞行距离
- private float MaxDistance;
-
- // 子弹飞行速度
- private float FlySpeed;
-
- //当前子弹已经飞行的距离
- private float CurrFlyDistance = 0;
-
- public void Init(Weapon weapon, uint targetLayer)
- {
- TriggerRole = weapon.TriggerRole;
- Weapon = weapon;
- AttackLayer = targetLayer;
- }
-
- ///
- /// 初始化子弹属性
- ///
- /// 射出该子弹的武器
- /// 速度
- /// 最大飞行距离
- /// 位置
- /// 角度
- /// 攻击目标层级
- public void Init(Weapon weapon, float speed, float maxDistance, Vector2 position, float rotation, uint targetLayer)
- {
- Init(weapon, targetLayer);
- CollisionArea.AreaEntered += OnArea2dEntered;
-
- if (TriggerRole == null || !TriggerRole.IsAi) //只有玩家使用该武器才能获得正常速度的子弹
- {
- FlySpeed = speed;
- }
- else
- {
- FlySpeed = speed * weapon.AiUseAttribute.AiAttackAttr.BulletSpeedScale;
- }
- MaxDistance = maxDistance;
- Position = position;
- Rotation = rotation;
- ShadowOffset = new Vector2(0, 5);
- BasisVelocity = new Vector2(FlySpeed, 0).Rotated(Rotation);
-
- //如果子弹会对玩家造成伤害, 则显示红色描边
- if (Player.Current.CollisionWithMask(targetLayer))
- {
- ShowOutline = true;
- OutlineColor = new Color(1, 0, 0);
- StartCoroutine(BorderFlashes());
- }
- PutDown(RoomLayerEnum.YSortLayer);
- }
-
- private IEnumerator BorderFlashes()
- {
- while (true)
- {
- ShowOutline = !ShowOutline;
- yield return new WaitForSeconds(0.12f);
- }
- }
-
- ///
- /// 播放子弹消失的特效
- ///
- public virtual void PlayDisappearEffect()
- {
- var packedScene = ResourceManager.Load(ResourcePath.prefab_effect_weapon_BulletDisappear_tscn);
- var node = packedScene.Instantiate();
- node.GlobalPosition = GlobalPosition;
- node.AddToActivityRoot(RoomLayerEnum.YSortLayer);
- }
-
- protected override void PhysicsProcessOver(float delta)
- {
- //移动
- var lastSlideCollision = GetLastSlideCollision();
- //撞到墙
- if (lastSlideCollision != null)
- {
- //创建粒子特效
- var packedScene = ResourceManager.Load(ResourcePath.prefab_effect_weapon_BulletSmoke_tscn);
- var smoke = packedScene.Instantiate();
- smoke.GlobalPosition = lastSlideCollision.GetPosition();
- smoke.GlobalRotation = lastSlideCollision.GetNormal().Angle();
- smoke.AddToActivityRoot(RoomLayerEnum.YSortLayer);
-
- Destroy();
- return;
- }
- //距离太大, 自动销毁
- CurrFlyDistance += FlySpeed * delta;
- if (CurrFlyDistance >= MaxDistance)
- {
- PlayDisappearEffect();
- Destroy();
- }
- }
-
- private void OnArea2dEntered(Area2D other)
- {
- var role = other.AsActivityObject();
- if (role != null)
- {
- var packedScene = ResourceManager.Load(ResourcePath.prefab_effect_weapon_BulletDisappear_tscn);
- var node = packedScene.Instantiate();
- node.GlobalPosition = GlobalPosition;
- node.AddToActivityRoot(RoomLayerEnum.YSortLayer);
-
- //计算子弹造成的伤害
- var damage = Utils.Random.RandomRangeInt(MinHarm, MaxHarm);
- if (TriggerRole != null)
- {
- damage = TriggerRole.RoleState.CallCalcDamageEvent(damage);
- }
-
- //击退
- if (role is not Player) //目标不是玩家才会触发击退
- {
- var attr = Weapon.GetUseAttribute(TriggerRole);
- var repel = Utils.Random.RandomConfigRange(attr.RepelRnage);
- if (repel != 0)
- {
- role.MoveController.AddForce(Vector2.FromAngle(BasisVelocity.Angle()) * repel, repel * 2);
- }
- }
-
- //造成伤害
- role.CallDeferred(nameof(Role.Hurt), damage, Rotation);
- Destroy();
- }
- }
-
- protected override void OnDestroy()
- {
- StopAllCoroutine();
- }
-}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/BulletAttribute.cs b/DungeonShooting_Godot/src/game/activity/bullet/BulletAttribute.cs
deleted file mode 100644
index aa30af1..0000000
--- a/DungeonShooting_Godot/src/game/activity/bullet/BulletAttribute.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-
-public class BulletAttribute
-{
-
-}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/IBullet.cs b/DungeonShooting_Godot/src/game/activity/bullet/IBullet.cs
deleted file mode 100644
index d6c221a..0000000
--- a/DungeonShooting_Godot/src/game/activity/bullet/IBullet.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-
-public interface IBullet : IDestroy, ICoroutine
-{
- ///
- /// 攻击的层级
- ///
- uint AttackLayer { get; set; }
-
- ///
- /// 发射该子弹的武器
- ///
- Weapon Weapon { get; }
-
- ///
- /// 发射该子弹的角色
- ///
- Role TriggerRole { get; }
-
- ///
- /// 最小伤害
- ///
- int MinHarm { get; set; }
-
- ///
- /// 最大伤害
- ///
- int MaxHarm { get; set; }
-
- ///
- /// 初始化子弹数据
- ///
- /// 发射该子弹的武器
- /// 攻击的层级
- void Init(Weapon weapon, uint attackLayer);
-}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/laser/Laser.cs b/DungeonShooting_Godot/src/game/activity/bullet/laser/Laser.cs
index 6a0cb77..4039b4e 100644
--- a/DungeonShooting_Godot/src/game/activity/bullet/laser/Laser.cs
+++ b/DungeonShooting_Godot/src/game/activity/bullet/laser/Laser.cs
@@ -73,7 +73,7 @@
Shape.Size = Vector2.Zero;;
LineSprite.Scale = new Vector2(0, width * _pixelScale);
- //如果子弹会对玩家造成伤害, 则显示红色描边
+ //如果子弹会对玩家造成伤害, 则显示成红色
if (Player.Current.CollisionWithMask(targetLayer))
{
LineSprite.Modulate = new Color(2.5f, 0.5f, 0.5f);
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/normal/Bullet.cs b/DungeonShooting_Godot/src/game/activity/bullet/normal/Bullet.cs
new file mode 100644
index 0000000..bc09905
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/activity/bullet/normal/Bullet.cs
@@ -0,0 +1,183 @@
+using System.Collections;
+using Godot;
+
+///
+/// 子弹类
+///
+[Tool]
+public partial class Bullet : ActivityObject, IBullet
+{
+ ///
+ /// 碰撞区域
+ ///
+ [Export, ExportFillNode]
+ public Area2D CollisionArea { get; set; }
+
+ ///
+ /// 攻击的层级
+ ///
+ public uint AttackLayer
+ {
+ get => CollisionArea.CollisionMask;
+ set => CollisionArea.CollisionMask = value;
+ }
+
+ ///
+ /// 发射该子弹的武器
+ ///
+ public Weapon Weapon { get; private set; }
+
+ ///
+ /// 最小伤害
+ ///
+ public int MinHarm { get; set; } = 4;
+
+ ///
+ /// 最大伤害
+ ///
+ public int MaxHarm { get; set; } = 4;
+
+ ///
+ /// 发射该子弹的角色
+ ///
+ public Role TriggerRole { get; private set; }
+
+ // 最大飞行距离
+ private float MaxDistance;
+
+ // 子弹飞行速度
+ private float FlySpeed;
+
+ //当前子弹已经飞行的距离
+ private float CurrFlyDistance = 0;
+
+ public void Init(Weapon weapon, uint targetLayer)
+ {
+ TriggerRole = weapon.TriggerRole;
+ Weapon = weapon;
+ AttackLayer = targetLayer;
+ }
+
+ ///
+ /// 初始化子弹属性
+ ///
+ /// 射出该子弹的武器
+ /// 速度
+ /// 最大飞行距离
+ /// 位置
+ /// 角度
+ /// 攻击目标层级
+ public void Init(Weapon weapon, float speed, float maxDistance, Vector2 position, float rotation, uint targetLayer)
+ {
+ Init(weapon, targetLayer);
+ CollisionArea.AreaEntered += OnArea2dEntered;
+
+ if (TriggerRole == null || !TriggerRole.IsAi) //只有玩家使用该武器才能获得正常速度的子弹
+ {
+ FlySpeed = speed;
+ }
+ else
+ {
+ FlySpeed = speed * weapon.AiUseAttribute.AiAttackAttr.BulletSpeedScale;
+ }
+ MaxDistance = maxDistance;
+ Position = position;
+ Rotation = rotation;
+ ShadowOffset = new Vector2(0, 5);
+ BasisVelocity = new Vector2(FlySpeed, 0).Rotated(Rotation);
+
+ //如果子弹会对玩家造成伤害, 则显示红色描边
+ if (Player.Current.CollisionWithMask(targetLayer))
+ {
+ ShowOutline = true;
+ OutlineColor = new Color(1, 0, 0);
+ StartCoroutine(BorderFlashes());
+ }
+ PutDown(RoomLayerEnum.YSortLayer);
+ }
+
+ private IEnumerator BorderFlashes()
+ {
+ while (true)
+ {
+ ShowOutline = !ShowOutline;
+ yield return new WaitForSeconds(0.12f);
+ }
+ }
+
+ ///
+ /// 播放子弹消失的特效
+ ///
+ public virtual void PlayDisappearEffect()
+ {
+ var packedScene = ResourceManager.Load(ResourcePath.prefab_effect_weapon_BulletDisappear_tscn);
+ var node = packedScene.Instantiate();
+ node.GlobalPosition = GlobalPosition;
+ node.AddToActivityRoot(RoomLayerEnum.YSortLayer);
+ }
+
+ protected override void PhysicsProcessOver(float delta)
+ {
+ //移动
+ var lastSlideCollision = GetLastSlideCollision();
+ //撞到墙
+ if (lastSlideCollision != null)
+ {
+ //创建粒子特效
+ var packedScene = ResourceManager.Load(ResourcePath.prefab_effect_weapon_BulletSmoke_tscn);
+ var smoke = packedScene.Instantiate();
+ smoke.GlobalPosition = lastSlideCollision.GetPosition();
+ smoke.GlobalRotation = lastSlideCollision.GetNormal().Angle();
+ smoke.AddToActivityRoot(RoomLayerEnum.YSortLayer);
+
+ Destroy();
+ return;
+ }
+ //距离太大, 自动销毁
+ CurrFlyDistance += FlySpeed * delta;
+ if (CurrFlyDistance >= MaxDistance)
+ {
+ PlayDisappearEffect();
+ Destroy();
+ }
+ }
+
+ private void OnArea2dEntered(Area2D other)
+ {
+ var role = other.AsActivityObject();
+ if (role != null)
+ {
+ var packedScene = ResourceManager.Load(ResourcePath.prefab_effect_weapon_BulletDisappear_tscn);
+ var node = packedScene.Instantiate();
+ node.GlobalPosition = GlobalPosition;
+ node.AddToActivityRoot(RoomLayerEnum.YSortLayer);
+
+ //计算子弹造成的伤害
+ var damage = Utils.Random.RandomRangeInt(MinHarm, MaxHarm);
+ if (TriggerRole != null)
+ {
+ damage = TriggerRole.RoleState.CallCalcDamageEvent(damage);
+ }
+
+ //击退
+ if (role is not Player) //目标不是玩家才会触发击退
+ {
+ var attr = Weapon.GetUseAttribute(TriggerRole);
+ var repel = Utils.Random.RandomConfigRange(attr.RepelRnage);
+ if (repel != 0)
+ {
+ role.MoveController.AddForce(Vector2.FromAngle(BasisVelocity.Angle()) * repel, repel * 2);
+ }
+ }
+
+ //造成伤害
+ role.CallDeferred(nameof(Role.Hurt), damage, Rotation);
+ Destroy();
+ }
+ }
+
+ protected override void OnDestroy()
+ {
+ StopAllCoroutine();
+ }
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/normal/BulletAttribute.cs b/DungeonShooting_Godot/src/game/activity/bullet/normal/BulletAttribute.cs
new file mode 100644
index 0000000..aa30af1
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/activity/bullet/normal/BulletAttribute.cs
@@ -0,0 +1,5 @@
+
+public class BulletAttribute
+{
+
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/normal/IBullet.cs b/DungeonShooting_Godot/src/game/activity/bullet/normal/IBullet.cs
new file mode 100644
index 0000000..d6c221a
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/activity/bullet/normal/IBullet.cs
@@ -0,0 +1,35 @@
+
+public interface IBullet : IDestroy, ICoroutine
+{
+ ///
+ /// 攻击的层级
+ ///
+ uint AttackLayer { get; set; }
+
+ ///
+ /// 发射该子弹的武器
+ ///
+ Weapon Weapon { get; }
+
+ ///
+ /// 发射该子弹的角色
+ ///
+ Role TriggerRole { get; }
+
+ ///
+ /// 最小伤害
+ ///
+ int MinHarm { get; set; }
+
+ ///
+ /// 最大伤害
+ ///
+ int MaxHarm { get; set; }
+
+ ///
+ /// 初始化子弹数据
+ ///
+ /// 发射该子弹的武器
+ /// 攻击的层级
+ void Init(Weapon weapon, uint attackLayer);
+}
\ No newline at end of file