diff --git a/DungeonShooting_Godot/excel/excelFile/ActivityObject.xlsx b/DungeonShooting_Godot/excel/excelFile/ActivityObject.xlsx
index f322a2c..8b0e0b8 100644
--- a/DungeonShooting_Godot/excel/excelFile/ActivityObject.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/ActivityObject.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/excelFile/Sound.xlsx b/DungeonShooting_Godot/excel/excelFile/Sound.xlsx
index 8d51f17..603d0e4 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/Weapon.xlsx b/DungeonShooting_Godot/excel/excelFile/Weapon.xlsx
index 1dc152e..27f6dfd 100644
--- a/DungeonShooting_Godot/excel/excelFile/Weapon.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/Weapon.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/prefab/effect/BulletDisappear.tscn b/DungeonShooting_Godot/prefab/effect/BulletDisappear.tscn
deleted file mode 100644
index 54549a1..0000000
--- a/DungeonShooting_Godot/prefab/effect/BulletDisappear.tscn
+++ /dev/null
@@ -1,145 +0,0 @@
-[gd_scene load_steps=15 format=3]
-
-[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/Smoke.png" id="1_ybsvf"]
-
-
-[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")
-}],
-"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
-spread = 180.0
-gravity = Vector3(0, 0, 0)
-initial_velocity_min = 45.0
-initial_velocity_max = 65.0
-orbit_velocity_min = 0.0
-orbit_velocity_max = 0.0
-angle_max = 360.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
-
-[sub_resource type="Animation" id="Animation_jnfgg"]
-resource_name = "Start"
-length = 0.3
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath(".:emitting")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [true]
-}
-tracks/1/type = "method"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("..")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0.3),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [],
-"method": &"queue_free"
-}]
-}
-
-[sub_resource type="Animation" id="Animation_yr61b"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath(".:emitting")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [false]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_1spnw"]
-_data = {
-"RESET": SubResource("Animation_yr61b"),
-"Start": SubResource("Animation_jnfgg")
-}
-
-[node name="BulletDisappear" type="AnimatedSprite2D"]
-modulate = Color(1, 1, 1, 0.784314)
-z_index = -4
-scale = Vector2(0.5, 0.5)
-sprite_frames = SubResource("SpriteFrames_ub3cw")
-autoplay = "default"
-
-[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
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-root_node = NodePath("../GPUParticles2D")
-autoplay = "Start"
-libraries = {
-"": SubResource("AnimationLibrary_1spnw")
-}
diff --git a/DungeonShooting_Godot/prefab/effect/BulletSmoke.tscn b/DungeonShooting_Godot/prefab/effect/BulletSmoke.tscn
deleted file mode 100644
index 368fd26..0000000
--- a/DungeonShooting_Godot/prefab/effect/BulletSmoke.tscn
+++ /dev/null
@@ -1,145 +0,0 @@
-[gd_scene load_steps=9 format=3]
-
-[ext_resource type="Texture2D" uid="uid://h7hkgbwj1li" path="res://resource/sprite/effects/Smoke.png" id="1"]
-[ext_resource type="Texture2D" uid="uid://bs1lan5uwxyfg" path="res://resource/curve/Curve1.tres" id="1_8pe88"]
-[ext_resource type="Texture2D" uid="uid://dwa4chrugc6b1" path="res://resource/sprite/effects/Collision.png" id="2"]
-
-[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
-spread = 25.0
-gravity = Vector3(0, 0, 0)
-initial_velocity_max = 90.0
-orbit_velocity_min = 0.0
-orbit_velocity_max = 0.0
-angle_max = 360.0
-scale_curve = ExtResource("1_8pe88")
-color = Color(0.75, 0.75, 0.75, 0.470588)
-anim_offset_max = 1.0
-
-[sub_resource type="Animation" id="5"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath(".:emitting")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [false]
-}
-tracks/1/type = "value"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath("Sprite2D:frame")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("Sprite2D:visible")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [true]
-}
-
-[sub_resource type="Animation" id="6"]
-resource_name = "Smoke"
-step = 0.05
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath(".:emitting")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 1,
-"values": [true]
-}
-tracks/1/type = "method"
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/path = NodePath(".")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/keys = {
-"times": PackedFloat32Array(1),
-"transitions": PackedFloat32Array(1),
-"values": [{
-"args": [],
-"method": &"queue_free"
-}]
-}
-tracks/2/type = "value"
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/path = NodePath("Sprite2D:frame")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/keys = {
-"times": PackedFloat32Array(0, 0.05, 0.1, 0.15),
-"transitions": PackedFloat32Array(1, 1, 1, 1),
-"update": 1,
-"values": [0, 1, 2, 3]
-}
-tracks/3/type = "value"
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/path = NodePath("Sprite2D:visible")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/keys = {
-"times": PackedFloat32Array(0, 0.2),
-"transitions": PackedFloat32Array(1, 1),
-"update": 1,
-"values": [true, false]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_uuiu7"]
-_data = {
-"RESET": SubResource("5"),
-"Smoke": SubResource("6")
-}
-
-[node name="BulletSmoke" type="GPUParticles2D"]
-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
-
-[node name="Sprite2D" type="Sprite2D" parent="."]
-modulate = Color(1.6, 1.6, 1.6, 1)
-texture = ExtResource("2")
-offset = Vector2(8, 0)
-hframes = 4
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-autoplay = "Smoke"
-libraries = {
-"": SubResource("AnimationLibrary_uuiu7")
-}
diff --git a/DungeonShooting_Godot/prefab/effect/Effect1.tscn b/DungeonShooting_Godot/prefab/effect/Effect1.tscn
deleted file mode 100644
index 4cd0ba7..0000000
--- a/DungeonShooting_Godot/prefab/effect/Effect1.tscn
+++ /dev/null
@@ -1,50 +0,0 @@
-[gd_scene load_steps=8 format=3]
-
-[ext_resource type="Material" uid="uid://c1chld6lkpgji" path="res://resource/material/SmokeParticleMaterial.tres" id="1_dxavj"]
-[ext_resource type="Texture2D" uid="uid://bs1lan5uwxyfg" path="res://resource/curve/Curve1.tres" id="1_s60r7"]
-[ext_resource type="Texture2D" uid="uid://h7hkgbwj1li" path="res://resource/sprite/effects/Smoke.png" id="2_3kyig"]
-[ext_resource type="Texture2D" uid="uid://csud4e6kc3iku" path="res://resource/sprite/effects/Effect1.png" id="3_1mceu"]
-[ext_resource type="Script" path="res://src/game/effects/Effect1.cs" id="3_ax5u4"]
-
-[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_ipadv"]
-particles_animation = true
-particles_anim_h_frames = 3
-particles_anim_v_frames = 1
-particles_anim_loop = false
-
-[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_pgx85"]
-particle_flag_align_y = true
-particle_flag_disable_z = true
-spread = 180.0
-gravity = Vector3(0, 0, 0)
-initial_velocity_min = 40.0
-initial_velocity_max = 70.0
-orbit_velocity_min = 0.0
-orbit_velocity_max = 0.0
-scale_min = 0.2
-scale_max = 0.3
-scale_curve = ExtResource("1_s60r7")
-
-[node name="Effect1" type="GPUParticles2D"]
-modulate = Color(0.760784, 0.760784, 0.760784, 0.533333)
-z_index = 5
-material = SubResource("CanvasItemMaterial_ipadv")
-emitting = false
-amount = 10
-process_material = ExtResource("1_dxavj")
-texture = ExtResource("2_3kyig")
-lifetime = 0.7
-one_shot = true
-explosiveness = 1.0
-fixed_fps = 20
-script = ExtResource("3_ax5u4")
-
-[node name="GPUParticles2D" type="GPUParticles2D" parent="."]
-emitting = false
-process_material = SubResource("ParticleProcessMaterial_pgx85")
-texture = ExtResource("3_1mceu")
-lifetime = 0.5
-one_shot = true
-explosiveness = 1.0
-randomness = 0.5
-fixed_fps = 20
diff --git a/DungeonShooting_Godot/prefab/effect/FirePart.tscn b/DungeonShooting_Godot/prefab/effect/FirePart.tscn
deleted file mode 100644
index 0d5c27f..0000000
--- a/DungeonShooting_Godot/prefab/effect/FirePart.tscn
+++ /dev/null
@@ -1,24 +0,0 @@
-[gd_scene load_steps=2 format=2]
-
-[sub_resource type="ParticleProcessMaterial" id=1]
-flag_disable_z = true
-spread = 60.0
-gravity = Vector3( 0, 0, 0 )
-initial_velocity = 200.0
-initial_velocity_random = 1.0
-orbit_velocity = 0.0
-orbit_velocity_random = 0.0
-linear_accel = -200.0
-linear_accel_random = 0.5
-
-[node name="FirePart" type="GPUParticles2D"]
-emitting = false
-amount = 10
-lifetime = 0.2
-one_shot = true
-explosiveness = 1.0
-local_coords = false
-process_material = SubResource( 1 )
-__meta__ = {
-"_edit_vertical_guides_": [ ]
-}
diff --git a/DungeonShooting_Godot/prefab/effect/ShotFire.tscn b/DungeonShooting_Godot/prefab/effect/ShotFire.tscn
deleted file mode 100644
index 1a07305..0000000
--- a/DungeonShooting_Godot/prefab/effect/ShotFire.tscn
+++ /dev/null
@@ -1,61 +0,0 @@
-[gd_scene load_steps=4 format=3]
-
-[ext_resource type="Texture2D" uid="uid://b0jsyrbk4bydt" path="res://resource/sprite/effects/ShotFire.png" id="1"]
-
-
-[sub_resource type="Animation" id=2]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/path = NodePath(".:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/keys = {
-"times": PackedFloat32Array( 0 ),
-"transitions": PackedFloat32Array( 1 ),
-"update": 0,
-"values": [ 0 ]
-}
-
-[sub_resource type="Animation" id=1]
-resource_name = "ShotFire"
-length = 0.2
-step = 0.05
-tracks/0/type = "value"
-tracks/0/path = NodePath(".:frame")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/keys = {
-"times": PackedFloat32Array( 0, 0.05, 0.1, 0.15 ),
-"transitions": PackedFloat32Array( 1, 1, 1, 1 ),
-"update": 1,
-"values": [ 0, 1, 2, 3 ]
-}
-tracks/1/type = "method"
-tracks/1/path = NodePath(".")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/keys = {
-"times": PackedFloat32Array( 0.2 ),
-"transitions": PackedFloat32Array( 1 ),
-"values": [ {
-"args": [ ],
-"method": "queue_free"
-} ]
-}
-
-[node name="ShotFire" type="Sprite2D"]
-modulate = Color( 1.6, 1.6, 1.6, 1 )
-texture = ExtResource( 1 )
-offset = Vector2( 8, 0 )
-hframes = 4
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-autoplay = "ShotFire"
-anims/RESET = SubResource( 2 )
-anims/ShotFire = SubResource( 1 )
diff --git a/DungeonShooting_Godot/prefab/effect/activityObject/Effect0001.tscn b/DungeonShooting_Godot/prefab/effect/activityObject/Effect0001.tscn
deleted file mode 100644
index 3ba7ecc..0000000
--- a/DungeonShooting_Godot/prefab/effect/activityObject/Effect0001.tscn
+++ /dev/null
@@ -1,200 +0,0 @@
-[gd_scene load_steps=30 format=3 uid="uid://pr88a1phtxgb"]
-
-[ext_resource type="Script" path="res://src/game/effects/EnemyDebris.cs" id="1_jnsw0"]
-[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_b3d83"]
-[ext_resource type="Texture2D" uid="uid://d2f55lu60x64i" path="res://resource/sprite/role/enemy0001/Enemy0001_Debris.png" id="3_ntutm"]
-[ext_resource type="Texture2D" uid="uid://h7hkgbwj1li" path="res://resource/sprite/effects/Smoke.png" id="4_egbbr"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_s1mj2"]
-resource_local_to_scene = true
-shader = ExtResource("2_b3d83")
-shader_parameter/blend = Color(0, 0, 0, 0.470588)
-shader_parameter/schedule = 1.0
-shader_parameter/alpha = 1.0
-shader_parameter/show_outline = true
-shader_parameter/outline_color = Color(0, 0, 0, 1)
-shader_parameter/outline_rainbow = false
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_08fn3"]
-shader = ExtResource("2_b3d83")
-shader_parameter/blend = Color(1, 1, 1, 1)
-shader_parameter/schedule = 0.0
-shader_parameter/alpha = 1.0
-shader_parameter/show_outline = false
-shader_parameter/outline_color = Color(0, 0, 0, 1)
-shader_parameter/outline_rainbow = false
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_cldwb"]
-atlas = ExtResource("3_ntutm")
-region = Rect2(0, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_ehtnl"]
-atlas = ExtResource("3_ntutm")
-region = Rect2(16, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_j05gd"]
-atlas = ExtResource("3_ntutm")
-region = Rect2(32, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_7el6f"]
-atlas = ExtResource("3_ntutm")
-region = Rect2(48, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_n7sw3"]
-atlas = ExtResource("3_ntutm")
-region = Rect2(64, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_mumsm"]
-atlas = ExtResource("3_ntutm")
-region = Rect2(80, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_gx41d"]
-atlas = ExtResource("3_ntutm")
-region = Rect2(96, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_r4nx1"]
-atlas = ExtResource("3_ntutm")
-region = Rect2(112, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_s8j4o"]
-atlas = ExtResource("3_ntutm")
-region = Rect2(128, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_2svrb"]
-atlas = ExtResource("3_ntutm")
-region = Rect2(144, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_twd5t"]
-atlas = ExtResource("3_ntutm")
-region = Rect2(160, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_8w5ka"]
-atlas = ExtResource("3_ntutm")
-region = Rect2(176, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_6iumv"]
-atlas = ExtResource("3_ntutm")
-region = Rect2(192, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_lpilf"]
-atlas = ExtResource("3_ntutm")
-region = Rect2(208, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_n1a5a"]
-atlas = ExtResource("3_ntutm")
-region = Rect2(224, 0, 16, 16)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_q0oeq"]
-atlas = ExtResource("3_ntutm")
-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="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
-gravity = Vector3(0, 0, 0)
-orbit_velocity_min = 0.0
-orbit_velocity_max = 0.0
-angle_max = 360.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")]
-script = ExtResource("1_jnsw0")
-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="."]
-
-[node name="GPUParticles2D" type="GPUParticles2D" parent="."]
-material = SubResource("CanvasItemMaterial_p3lv8")
-emitting = false
-process_material = SubResource("ParticleProcessMaterial_ku1mm")
-texture = ExtResource("4_egbbr")
-fixed_fps = 20
diff --git a/DungeonShooting_Godot/prefab/effect/activityObject/EnemyBloodEffect.tscn b/DungeonShooting_Godot/prefab/effect/activityObject/EnemyBloodEffect.tscn
deleted file mode 100644
index b19d4aa..0000000
--- a/DungeonShooting_Godot/prefab/effect/activityObject/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_jp2tw"]
-[ext_resource type="Texture2D" uid="uid://h7hkgbwj1li" path="res://resource/sprite/effects/Smoke.png" id="2_xg444"]
-[ext_resource type="Script" path="res://src/game/effects/AutoDestroyEffect.cs" id="3_lldtd"]
-
-[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"]
-modulate = Color(0.811765, 0.0980392, 0.0980392, 0.627451)
-material = SubResource("CanvasItemMaterial_emuda")
-emitting = false
-amount = 10
-process_material = ExtResource("1_jp2tw")
-texture = ExtResource("2_xg444")
-lifetime = 1.2
-one_shot = true
-explosiveness = 1.0
-fixed_fps = 20
-script = ExtResource("3_lldtd")
-DelayTime = 1.5
diff --git a/DungeonShooting_Godot/prefab/effect/common/Effect1.tscn b/DungeonShooting_Godot/prefab/effect/common/Effect1.tscn
new file mode 100644
index 0000000..4cd0ba7
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/effect/common/Effect1.tscn
@@ -0,0 +1,50 @@
+[gd_scene load_steps=8 format=3]
+
+[ext_resource type="Material" uid="uid://c1chld6lkpgji" path="res://resource/material/SmokeParticleMaterial.tres" id="1_dxavj"]
+[ext_resource type="Texture2D" uid="uid://bs1lan5uwxyfg" path="res://resource/curve/Curve1.tres" id="1_s60r7"]
+[ext_resource type="Texture2D" uid="uid://h7hkgbwj1li" path="res://resource/sprite/effects/Smoke.png" id="2_3kyig"]
+[ext_resource type="Texture2D" uid="uid://csud4e6kc3iku" path="res://resource/sprite/effects/Effect1.png" id="3_1mceu"]
+[ext_resource type="Script" path="res://src/game/effects/Effect1.cs" id="3_ax5u4"]
+
+[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_ipadv"]
+particles_animation = true
+particles_anim_h_frames = 3
+particles_anim_v_frames = 1
+particles_anim_loop = false
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_pgx85"]
+particle_flag_align_y = true
+particle_flag_disable_z = true
+spread = 180.0
+gravity = Vector3(0, 0, 0)
+initial_velocity_min = 40.0
+initial_velocity_max = 70.0
+orbit_velocity_min = 0.0
+orbit_velocity_max = 0.0
+scale_min = 0.2
+scale_max = 0.3
+scale_curve = ExtResource("1_s60r7")
+
+[node name="Effect1" type="GPUParticles2D"]
+modulate = Color(0.760784, 0.760784, 0.760784, 0.533333)
+z_index = 5
+material = SubResource("CanvasItemMaterial_ipadv")
+emitting = false
+amount = 10
+process_material = ExtResource("1_dxavj")
+texture = ExtResource("2_3kyig")
+lifetime = 0.7
+one_shot = true
+explosiveness = 1.0
+fixed_fps = 20
+script = ExtResource("3_ax5u4")
+
+[node name="GPUParticles2D" type="GPUParticles2D" parent="."]
+emitting = false
+process_material = SubResource("ParticleProcessMaterial_pgx85")
+texture = ExtResource("3_1mceu")
+lifetime = 0.5
+one_shot = true
+explosiveness = 1.0
+randomness = 0.5
+fixed_fps = 20
diff --git a/DungeonShooting_Godot/prefab/effect/enemy/Effect0001.tscn b/DungeonShooting_Godot/prefab/effect/enemy/Effect0001.tscn
new file mode 100644
index 0000000..6b7176e
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/effect/enemy/Effect0001.tscn
@@ -0,0 +1,200 @@
+[gd_scene load_steps=30 format=3 uid="uid://pr88a1phtxgb"]
+
+[ext_resource type="Script" path="res://src/game/effects/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
+
+[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
+
+[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="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
+gravity = Vector3(0, 0, 0)
+orbit_velocity_min = 0.0
+orbit_velocity_max = 0.0
+angle_max = 360.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")]
+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="."]
+
+[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/EnemyBloodEffect.tscn b/DungeonShooting_Godot/prefab/effect/enemy/EnemyBloodEffect.tscn
new file mode 100644
index 0000000..9e15242
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/effect/enemy/EnemyBloodEffect.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/AutoDestroyEffect.cs" id="3_i1urq"]
+
+[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"]
+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_i1urq")
+DelayTime = 1.5
diff --git a/DungeonShooting_Godot/prefab/effect/weapon/BulletDisappear.tscn b/DungeonShooting_Godot/prefab/effect/weapon/BulletDisappear.tscn
new file mode 100644
index 0000000..54549a1
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/effect/weapon/BulletDisappear.tscn
@@ -0,0 +1,145 @@
+[gd_scene load_steps=15 format=3]
+
+[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/Smoke.png" id="1_ybsvf"]
+
+
+[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")
+}],
+"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
+spread = 180.0
+gravity = Vector3(0, 0, 0)
+initial_velocity_min = 45.0
+initial_velocity_max = 65.0
+orbit_velocity_min = 0.0
+orbit_velocity_max = 0.0
+angle_max = 360.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
+
+[sub_resource type="Animation" id="Animation_jnfgg"]
+resource_name = "Start"
+length = 0.3
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:emitting")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/1/type = "method"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("..")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0.3),
+"transitions": PackedFloat32Array(1),
+"values": [{
+"args": [],
+"method": &"queue_free"
+}]
+}
+
+[sub_resource type="Animation" id="Animation_yr61b"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:emitting")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_1spnw"]
+_data = {
+"RESET": SubResource("Animation_yr61b"),
+"Start": SubResource("Animation_jnfgg")
+}
+
+[node name="BulletDisappear" type="AnimatedSprite2D"]
+modulate = Color(1, 1, 1, 0.784314)
+z_index = -4
+scale = Vector2(0.5, 0.5)
+sprite_frames = SubResource("SpriteFrames_ub3cw")
+autoplay = "default"
+
+[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
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+root_node = NodePath("../GPUParticles2D")
+autoplay = "Start"
+libraries = {
+"": SubResource("AnimationLibrary_1spnw")
+}
diff --git a/DungeonShooting_Godot/prefab/effect/weapon/BulletSmoke.tscn b/DungeonShooting_Godot/prefab/effect/weapon/BulletSmoke.tscn
new file mode 100644
index 0000000..a540d11
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/effect/weapon/BulletSmoke.tscn
@@ -0,0 +1,146 @@
+[gd_scene load_steps=9 format=3]
+
+[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="Texture2D" uid="uid://dwa4chrugc6b1" path="res://resource/sprite/effects/Collision.png" id="2"]
+
+
+[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
+spread = 25.0
+gravity = Vector3(0, 0, 0)
+initial_velocity_max = 90.0
+orbit_velocity_min = 0.0
+orbit_velocity_max = 0.0
+angle_max = 360.0
+scale_curve = ExtResource("1_8pe88")
+color = Color(0.75, 0.75, 0.75, 0.470588)
+anim_offset_max = 1.0
+
+[sub_resource type="Animation" id="5"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:emitting")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [false]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Sprite2D:frame")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Sprite2D:visible")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [true]
+}
+
+[sub_resource type="Animation" id="6"]
+resource_name = "Smoke"
+step = 0.05
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath(".:emitting")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/1/type = "method"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath(".")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(1),
+"transitions": PackedFloat32Array(1),
+"values": [{
+"args": [],
+"method": &"queue_free"
+}]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Sprite2D:frame")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1, 0.15),
+"transitions": PackedFloat32Array(1, 1, 1, 1),
+"update": 1,
+"values": [0, 1, 2, 3]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Sprite2D:visible")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.2),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [true, false]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_uuiu7"]
+_data = {
+"RESET": SubResource("5"),
+"Smoke": SubResource("6")
+}
+
+[node name="BulletSmoke" type="GPUParticles2D"]
+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
+
+[node name="Sprite2D" type="Sprite2D" parent="."]
+modulate = Color(1.6, 1.6, 1.6, 1)
+texture = ExtResource("2")
+offset = Vector2(8, 0)
+hframes = 4
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+autoplay = "Smoke"
+libraries = {
+"": SubResource("AnimationLibrary_uuiu7")
+}
diff --git a/DungeonShooting_Godot/prefab/effect/weapon/FirePart.tscn b/DungeonShooting_Godot/prefab/effect/weapon/FirePart.tscn
new file mode 100644
index 0000000..0d5c27f
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/effect/weapon/FirePart.tscn
@@ -0,0 +1,24 @@
+[gd_scene load_steps=2 format=2]
+
+[sub_resource type="ParticleProcessMaterial" id=1]
+flag_disable_z = true
+spread = 60.0
+gravity = Vector3( 0, 0, 0 )
+initial_velocity = 200.0
+initial_velocity_random = 1.0
+orbit_velocity = 0.0
+orbit_velocity_random = 0.0
+linear_accel = -200.0
+linear_accel_random = 0.5
+
+[node name="FirePart" type="GPUParticles2D"]
+emitting = false
+amount = 10
+lifetime = 0.2
+one_shot = true
+explosiveness = 1.0
+local_coords = false
+process_material = SubResource( 1 )
+__meta__ = {
+"_edit_vertical_guides_": [ ]
+}
diff --git a/DungeonShooting_Godot/prefab/effect/weapon/MeleeAttack1.tscn b/DungeonShooting_Godot/prefab/effect/weapon/MeleeAttack1.tscn
new file mode 100644
index 0000000..5ba7c89
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/effect/weapon/MeleeAttack1.tscn
@@ -0,0 +1,39 @@
+[gd_scene load_steps=7 format=3 uid="uid://cylm455bsio3g"]
+
+[ext_resource type="Texture2D" uid="uid://7jhe2mmctmr1" path="res://resource/sprite/effects/weapon/MeleeAttack1.png" id="1_bjxle"]
+[ext_resource type="Script" path="res://src/game/effects/AutoDestroySprite.cs" id="2_bjagc"]
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_h5mw5"]
+atlas = ExtResource("1_bjxle")
+region = Rect2(0, 0, 16, 32)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_rjd0g"]
+atlas = ExtResource("1_bjxle")
+region = Rect2(16, 0, 16, 32)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_q06ex"]
+atlas = ExtResource("1_bjxle")
+region = Rect2(32, 0, 16, 32)
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_hkcv6"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_h5mw5")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_rjd0g")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_q06ex")
+}],
+"loop": false,
+"name": &"default",
+"speed": 20.0
+}]
+
+[node name="MeleeAttack1" type="AnimatedSprite2D"]
+sprite_frames = SubResource("SpriteFrames_hkcv6")
+autoplay = "default"
+script = ExtResource("2_bjagc")
+DelayTime = 0.15
diff --git a/DungeonShooting_Godot/prefab/effect/weapon/ShotFire.tscn b/DungeonShooting_Godot/prefab/effect/weapon/ShotFire.tscn
new file mode 100644
index 0000000..b0161a5
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/effect/weapon/ShotFire.tscn
@@ -0,0 +1,48 @@
+[gd_scene load_steps=8 format=3 uid="uid://433h6huyctl1"]
+
+[ext_resource type="Texture2D" uid="uid://b0jsyrbk4bydt" path="res://resource/sprite/effects/weapon/ShotFire.png" id="1_sencp"]
+[ext_resource type="Script" path="res://src/game/effects/AutoDestroySprite.cs" id="2_lnwju"]
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_asq5h"]
+atlas = ExtResource("1_sencp")
+region = Rect2(0, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_n77w8"]
+atlas = ExtResource("1_sencp")
+region = Rect2(16, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_10rnx"]
+atlas = ExtResource("1_sencp")
+region = Rect2(32, 0, 16, 16)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_qi1pq"]
+atlas = ExtResource("1_sencp")
+region = Rect2(48, 0, 16, 16)
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_73j16"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_asq5h")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_n77w8")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_10rnx")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_qi1pq")
+}],
+"loop": false,
+"name": &"default",
+"speed": 20.0
+}]
+
+[node name="ShotFire" type="AnimatedSprite2D"]
+modulate = Color(1.6, 1.6, 1.6, 1)
+sprite_frames = SubResource("SpriteFrames_73j16")
+autoplay = "default"
+offset = Vector2(8, 0)
+script = ExtResource("2_lnwju")
+DelayTime = 0.2
diff --git a/DungeonShooting_Godot/resource/config/ActivityObject.json b/DungeonShooting_Godot/resource/config/ActivityObject.json
index d66af1d..49cb525 100644
--- a/DungeonShooting_Godot/resource/config/ActivityObject.json
+++ b/DungeonShooting_Godot/resource/config/ActivityObject.json
@@ -155,7 +155,7 @@
"Name": "",
"Intro": "\u654C\u4EBA\u6B7B\u4EA1\u788E\u7247",
"Details": "",
- "Prefab": "res://prefab/effect/activityObject/Effect0001.tscn",
+ "Prefab": "res://prefab/effect/enemy/Effect0001.tscn",
"Icon": "",
"ShowInMapEditor": false
},
@@ -165,7 +165,7 @@
"Name": "\u978B\u5B50",
"Intro": "\u63D0\u9AD8\u79FB\u52A8\u901F\u5EA6",
"Details": "",
- "Prefab": "res://prefab/prop/buff/BuffProp0001.tscn",
+ "Prefab": "res://prefab/effect/enemy/Effect0001.tscn",
"Icon": "res://resource/sprite/prop/buff/BuffProp0001.png",
"ShowInMapEditor": true
},
diff --git a/DungeonShooting_Godot/resource/config/Weapon.json b/DungeonShooting_Godot/resource/config/Weapon.json
index 2ee18aa..1bf292c 100644
--- a/DungeonShooting_Godot/resource/config/Weapon.json
+++ b/DungeonShooting_Godot/resource/config/Weapon.json
@@ -20,42 +20,57 @@
"ManualBeLoaded": false,
"AutoManualBeLoaded": false,
"BeLoadedTime": 0,
- "MinContinuousCount": 1,
- "MaxContinuousCount": 1,
+ "ContinuousCountRange": [
+ 1
+ ],
"TriggerInterval": 0,
"StartFiringSpeed": 480,
"FinalFiringSpeed": 480,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
- "MinFireBulletCount": 1,
- "MaxFireBulletCount": 1,
+ "FireBulletCountRange": [
+ 1
+ ],
"DelayedTime": 0,
"StartScatteringRange": 5,
"FinalScatteringRange": 45,
"ScatteringRangeAddValue": 3,
"ScatteringRangeBackSpeed": 40,
"ScatteringRangeBackDelayTime": 0.5,
- "MinBacklash": 2,
- "MaxBacklash": 4,
+ "BacklashRange": [
+ 2,
+ 4
+ ],
"BacklashRegressionSpeed": 35,
"UpliftAngle": 10,
"DefaultAngle": 0,
"UpliftAngleRestore": 1,
"BulletId": "bullet0001",
- "BulletMaxHarm": 4,
- "BulletMinHarm": 4,
- "BulletMinDeviationAngle": 0,
- "BulletMaxDeviationAngle": 0,
- "BulletMaxSpeed": 320,
- "BulletMinSpeed": 350,
- "BulletMinDistance": 300,
- "BulletMaxDistance": 400,
+ "BulletHarmRange": [
+ 4
+ ],
+ "BulletDeviationAngleRange": [
+ 0
+ ],
+ "BulletSpeedRange": [
+ 320,
+ 350
+ ],
+ "BulletDistanceRange": [
+ 300,
+ 400
+ ],
"ShellId": "shell0001",
"ThrowShellDelayTime": 0,
"ThrowCollisionSize": {
"X": 20,
"Y": 15
},
+ "CanMeleeAttack": true,
+ "MeleeAttackHarmRange": [
+ 5,
+ 8
+ ],
"__ShootSound": "shooting0005",
"__BeginReloadSound": "reloadBegin0004",
"BeginReloadSoundDelayTime": 0.2,
@@ -92,42 +107,57 @@
"ManualBeLoaded": false,
"AutoManualBeLoaded": false,
"BeLoadedTime": 0,
- "MinContinuousCount": 3,
- "MaxContinuousCount": 3,
+ "ContinuousCountRange": [
+ 3
+ ],
"TriggerInterval": 3,
"StartFiringSpeed": 480,
"FinalFiringSpeed": 480,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
- "MinFireBulletCount": 1,
- "MaxFireBulletCount": 1,
+ "FireBulletCountRange": [
+ 1
+ ],
"DelayedTime": 0,
"StartScatteringRange": 5,
"FinalScatteringRange": 45,
"ScatteringRangeAddValue": 3,
"ScatteringRangeBackSpeed": 40,
"ScatteringRangeBackDelayTime": 0.5,
- "MinBacklash": 2,
- "MaxBacklash": 4,
+ "BacklashRange": [
+ 2,
+ 4
+ ],
"BacklashRegressionSpeed": 35,
"UpliftAngle": 10,
"DefaultAngle": 0,
"UpliftAngleRestore": 1,
"BulletId": "bullet0001",
- "BulletMaxHarm": 4,
- "BulletMinHarm": 4,
- "BulletMinDeviationAngle": 0,
- "BulletMaxDeviationAngle": 0,
- "BulletMaxSpeed": 320,
- "BulletMinSpeed": 350,
- "BulletMinDistance": 300,
- "BulletMaxDistance": 400,
+ "BulletHarmRange": [
+ 4
+ ],
+ "BulletDeviationAngleRange": [
+ 0
+ ],
+ "BulletSpeedRange": [
+ 320,
+ 350
+ ],
+ "BulletDistanceRange": [
+ 300,
+ 400
+ ],
"ShellId": "shell0001",
"ThrowShellDelayTime": 0,
"ThrowCollisionSize": {
"X": 20,
"Y": 15
},
+ "CanMeleeAttack": true,
+ "MeleeAttackHarmRange": [
+ 5,
+ 8
+ ],
"__ShootSound": "shooting0005",
"__BeginReloadSound": "reloadBegin0004",
"BeginReloadSoundDelayTime": 0.2,
@@ -164,42 +194,58 @@
"ManualBeLoaded": true,
"AutoManualBeLoaded": true,
"BeLoadedTime": 0.6,
- "MinContinuousCount": 1,
- "MaxContinuousCount": 1,
+ "ContinuousCountRange": [
+ 1
+ ],
"TriggerInterval": 0,
"StartFiringSpeed": 120,
"FinalFiringSpeed": 120,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
- "MinFireBulletCount": 5,
- "MaxFireBulletCount": 5,
+ "FireBulletCountRange": [
+ 5
+ ],
"DelayedTime": 0,
"StartScatteringRange": 12,
"FinalScatteringRange": 30,
"ScatteringRangeAddValue": 20,
"ScatteringRangeBackSpeed": 40,
"ScatteringRangeBackDelayTime": 0.5,
- "MinBacklash": 5,
- "MaxBacklash": 6,
+ "BacklashRange": [
+ 5,
+ 6
+ ],
"BacklashRegressionSpeed": 35,
"UpliftAngle": 15,
"DefaultAngle": 0,
"UpliftAngleRestore": 1,
"BulletId": "bullet0002",
- "BulletMaxHarm": 4,
- "BulletMinHarm": 4,
- "BulletMinDeviationAngle": -10,
- "BulletMaxDeviationAngle": 10,
- "BulletMaxSpeed": 280,
- "BulletMinSpeed": 380,
- "BulletMinDistance": 200,
- "BulletMaxDistance": 250,
+ "BulletHarmRange": [
+ 4
+ ],
+ "BulletDeviationAngleRange": [
+ -10,
+ 10
+ ],
+ "BulletSpeedRange": [
+ 280,
+ 380
+ ],
+ "BulletDistanceRange": [
+ 200,
+ 250
+ ],
"ShellId": "shell0002",
"ThrowShellDelayTime": 0.2,
"ThrowCollisionSize": {
"X": 20,
"Y": 15
},
+ "CanMeleeAttack": true,
+ "MeleeAttackHarmRange": [
+ 5,
+ 8
+ ],
"__ShootSound": "shooting0003",
"__BeginReloadSound": "reloadBegin0002",
"BeginReloadSoundDelayTime": 0,
@@ -236,42 +282,58 @@
"ManualBeLoaded": true,
"AutoManualBeLoaded": true,
"BeLoadedTime": 0.6,
- "MinContinuousCount": 1,
- "MaxContinuousCount": 1,
+ "ContinuousCountRange": [
+ 1
+ ],
"TriggerInterval": 3.5,
"StartFiringSpeed": 120,
"FinalFiringSpeed": 120,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
- "MinFireBulletCount": 5,
- "MaxFireBulletCount": 5,
+ "FireBulletCountRange": [
+ 5
+ ],
"DelayedTime": 0,
"StartScatteringRange": 12,
"FinalScatteringRange": 30,
"ScatteringRangeAddValue": 20,
"ScatteringRangeBackSpeed": 40,
"ScatteringRangeBackDelayTime": 0.5,
- "MinBacklash": 5,
- "MaxBacklash": 6,
+ "BacklashRange": [
+ 5,
+ 6
+ ],
"BacklashRegressionSpeed": 35,
"UpliftAngle": 15,
"DefaultAngle": 0,
"UpliftAngleRestore": 1,
"BulletId": "bullet0002",
- "BulletMaxHarm": 4,
- "BulletMinHarm": 4,
- "BulletMinDeviationAngle": -10,
- "BulletMaxDeviationAngle": 10,
- "BulletMaxSpeed": 280,
- "BulletMinSpeed": 380,
- "BulletMinDistance": 200,
- "BulletMaxDistance": 250,
+ "BulletHarmRange": [
+ 4
+ ],
+ "BulletDeviationAngleRange": [
+ -10,
+ 10
+ ],
+ "BulletSpeedRange": [
+ 280,
+ 380
+ ],
+ "BulletDistanceRange": [
+ 200,
+ 250
+ ],
"ShellId": "shell0002",
"ThrowShellDelayTime": 0.2,
"ThrowCollisionSize": {
"X": 20,
"Y": 15
},
+ "CanMeleeAttack": true,
+ "MeleeAttackHarmRange": [
+ 5,
+ 8
+ ],
"__ShootSound": "shooting0003",
"__BeginReloadSound": "reloadBegin0002",
"BeginReloadSoundDelayTime": 0,
@@ -308,42 +370,57 @@
"ManualBeLoaded": false,
"AutoManualBeLoaded": false,
"BeLoadedTime": 0.05,
- "MinContinuousCount": 1,
- "MaxContinuousCount": 1,
+ "ContinuousCountRange": [
+ 1
+ ],
"TriggerInterval": 0,
"StartFiringSpeed": 460,
"FinalFiringSpeed": 460,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
- "MinFireBulletCount": 1,
- "MaxFireBulletCount": 1,
+ "FireBulletCountRange": [
+ 1
+ ],
"DelayedTime": 0,
"StartScatteringRange": 5,
"FinalScatteringRange": 25,
"ScatteringRangeAddValue": 4,
"ScatteringRangeBackSpeed": 40,
"ScatteringRangeBackDelayTime": 0.5,
- "MinBacklash": 3,
- "MaxBacklash": 5,
+ "BacklashRange": [
+ 3,
+ 5
+ ],
"BacklashRegressionSpeed": 35,
"UpliftAngle": 20,
"DefaultAngle": 0,
"UpliftAngleRestore": 1,
"BulletId": "bullet0001",
- "BulletMaxHarm": 4,
- "BulletMinHarm": 4,
- "BulletMinDeviationAngle": 0,
- "BulletMaxDeviationAngle": 0,
- "BulletMaxSpeed": 320,
- "BulletMinSpeed": 350,
- "BulletMinDistance": 250,
- "BulletMaxDistance": 300,
+ "BulletHarmRange": [
+ 4
+ ],
+ "BulletDeviationAngleRange": [
+ 0
+ ],
+ "BulletSpeedRange": [
+ 320,
+ 350
+ ],
+ "BulletDistanceRange": [
+ 250,
+ 300
+ ],
"ShellId": "shell0001",
"ThrowShellDelayTime": 0,
"ThrowCollisionSize": {
"X": 20,
"Y": 15
},
+ "CanMeleeAttack": true,
+ "MeleeAttackHarmRange": [
+ 5,
+ 8
+ ],
"__ShootSound": "shooting0004",
"__BeginReloadSound": "reloading0001",
"BeginReloadSoundDelayTime": 0,
@@ -380,42 +457,57 @@
"ManualBeLoaded": false,
"AutoManualBeLoaded": false,
"BeLoadedTime": 0.05,
- "MinContinuousCount": 1,
- "MaxContinuousCount": 1,
+ "ContinuousCountRange": [
+ 1
+ ],
"TriggerInterval": 2,
"StartFiringSpeed": 300,
"FinalFiringSpeed": 300,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
- "MinFireBulletCount": 1,
- "MaxFireBulletCount": 1,
+ "FireBulletCountRange": [
+ 1
+ ],
"DelayedTime": 0,
"StartScatteringRange": 5,
"FinalScatteringRange": 25,
"ScatteringRangeAddValue": 4,
"ScatteringRangeBackSpeed": 40,
"ScatteringRangeBackDelayTime": 0.5,
- "MinBacklash": 3,
- "MaxBacklash": 5,
+ "BacklashRange": [
+ 3,
+ 5
+ ],
"BacklashRegressionSpeed": 35,
"UpliftAngle": 20,
"DefaultAngle": 0,
"UpliftAngleRestore": 1,
"BulletId": "bullet0001",
- "BulletMaxHarm": 4,
- "BulletMinHarm": 4,
- "BulletMinDeviationAngle": 0,
- "BulletMaxDeviationAngle": 0,
- "BulletMaxSpeed": 320,
- "BulletMinSpeed": 350,
- "BulletMinDistance": 250,
- "BulletMaxDistance": 300,
+ "BulletHarmRange": [
+ 4
+ ],
+ "BulletDeviationAngleRange": [
+ 0
+ ],
+ "BulletSpeedRange": [
+ 320,
+ 350
+ ],
+ "BulletDistanceRange": [
+ 250,
+ 300
+ ],
"ShellId": "shell0001",
"ThrowShellDelayTime": 0,
"ThrowCollisionSize": {
"X": 20,
"Y": 15
},
+ "CanMeleeAttack": true,
+ "MeleeAttackHarmRange": [
+ 5,
+ 8
+ ],
"__ShootSound": "shooting0004",
"__BeginReloadSound": "reloading0001",
"BeginReloadSoundDelayTime": 0,
@@ -452,42 +544,54 @@
"ManualBeLoaded": false,
"AutoManualBeLoaded": false,
"BeLoadedTime": 0,
- "MinContinuousCount": 1,
- "MaxContinuousCount": 1,
+ "ContinuousCountRange": [
+ 1
+ ],
"TriggerInterval": 0,
"StartFiringSpeed": 180,
"FinalFiringSpeed": 180,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
- "MinFireBulletCount": 1,
- "MaxFireBulletCount": 1,
+ "FireBulletCountRange": [
+ 1
+ ],
"DelayedTime": 0,
"StartScatteringRange": 0,
"FinalScatteringRange": 0,
"ScatteringRangeAddValue": 0,
"ScatteringRangeBackSpeed": 0,
"ScatteringRangeBackDelayTime": 0,
- "MinBacklash": -8,
- "MaxBacklash": -8,
+ "BacklashRange": [
+ -8
+ ],
"BacklashRegressionSpeed": 24,
"UpliftAngle": -95,
"DefaultAngle": 0,
"UpliftAngleRestore": 1,
"BulletId": "bullet0001",
- "BulletMaxHarm": 25,
- "BulletMinHarm": 25,
- "BulletMinDeviationAngle": 0,
- "BulletMaxDeviationAngle": 0,
- "BulletMaxSpeed": 350,
- "BulletMinSpeed": 350,
- "BulletMinDistance": 35,
- "BulletMaxDistance": 35,
+ "BulletHarmRange": [
+ 25
+ ],
+ "BulletDeviationAngleRange": [
+ 0
+ ],
+ "BulletSpeedRange": [
+ 350
+ ],
+ "BulletDistanceRange": [
+ 35
+ ],
"ShellId": "",
"ThrowShellDelayTime": 0,
"ThrowCollisionSize": {
"X": 20,
"Y": 15
},
+ "CanMeleeAttack": true,
+ "MeleeAttackHarmRange": [
+ 5,
+ 8
+ ],
"__ShootSound": "",
"__BeginReloadSound": "",
"BeginReloadSoundDelayTime": 0,
@@ -524,42 +628,54 @@
"ManualBeLoaded": false,
"AutoManualBeLoaded": false,
"BeLoadedTime": 0,
- "MinContinuousCount": 1,
- "MaxContinuousCount": 1,
+ "ContinuousCountRange": [
+ 1
+ ],
"TriggerInterval": 3,
"StartFiringSpeed": 180,
"FinalFiringSpeed": 180,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
- "MinFireBulletCount": 1,
- "MaxFireBulletCount": 1,
+ "FireBulletCountRange": [
+ 1
+ ],
"DelayedTime": 0,
"StartScatteringRange": 0,
"FinalScatteringRange": 0,
"ScatteringRangeAddValue": 0,
"ScatteringRangeBackSpeed": 0,
"ScatteringRangeBackDelayTime": 0,
- "MinBacklash": -8,
- "MaxBacklash": -8,
+ "BacklashRange": [
+ -8
+ ],
"BacklashRegressionSpeed": 24,
"UpliftAngle": -95,
"DefaultAngle": 0,
"UpliftAngleRestore": 1,
"BulletId": "bullet0001",
- "BulletMaxHarm": 25,
- "BulletMinHarm": 25,
- "BulletMinDeviationAngle": 0,
- "BulletMaxDeviationAngle": 0,
- "BulletMaxSpeed": 350,
- "BulletMinSpeed": 350,
- "BulletMinDistance": 35,
- "BulletMaxDistance": 35,
+ "BulletHarmRange": [
+ 25
+ ],
+ "BulletDeviationAngleRange": [
+ 0
+ ],
+ "BulletSpeedRange": [
+ 350
+ ],
+ "BulletDistanceRange": [
+ 35
+ ],
"ShellId": "",
"ThrowShellDelayTime": 0,
"ThrowCollisionSize": {
"X": 20,
"Y": 15
},
+ "CanMeleeAttack": true,
+ "MeleeAttackHarmRange": [
+ 5,
+ 8
+ ],
"__ShootSound": "",
"__BeginReloadSound": "",
"BeginReloadSoundDelayTime": 0,
@@ -596,42 +712,57 @@
"ManualBeLoaded": true,
"AutoManualBeLoaded": false,
"BeLoadedTime": 0.9,
- "MinContinuousCount": 1,
- "MaxContinuousCount": 1,
+ "ContinuousCountRange": [
+ 1
+ ],
"TriggerInterval": 0,
"StartFiringSpeed": 150,
"FinalFiringSpeed": 150,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
- "MinFireBulletCount": 1,
- "MaxFireBulletCount": 1,
+ "FireBulletCountRange": [
+ 1
+ ],
"DelayedTime": 0,
"StartScatteringRange": 3,
"FinalScatteringRange": 60,
"ScatteringRangeAddValue": 40,
"ScatteringRangeBackSpeed": 40,
"ScatteringRangeBackDelayTime": 0.8,
- "MinBacklash": 5,
- "MaxBacklash": 7,
+ "BacklashRange": [
+ 5,
+ 7
+ ],
"BacklashRegressionSpeed": 20,
"UpliftAngle": 15,
"DefaultAngle": 0,
"UpliftAngleRestore": 1,
"BulletId": "bullet0001",
- "BulletMaxHarm": 30,
- "BulletMinHarm": 30,
- "BulletMinDeviationAngle": 0,
- "BulletMaxDeviationAngle": 0,
- "BulletMaxSpeed": 600,
- "BulletMinSpeed": 620,
- "BulletMinDistance": 700,
- "BulletMaxDistance": 900,
+ "BulletHarmRange": [
+ 30
+ ],
+ "BulletDeviationAngleRange": [
+ 0
+ ],
+ "BulletSpeedRange": [
+ 600,
+ 620
+ ],
+ "BulletDistanceRange": [
+ 700,
+ 900
+ ],
"ShellId": "shell0003",
"ThrowShellDelayTime": 0.2,
"ThrowCollisionSize": {
"X": 20,
"Y": 15
},
+ "CanMeleeAttack": true,
+ "MeleeAttackHarmRange": [
+ 5,
+ 8
+ ],
"__ShootSound": "shooting0008",
"__BeginReloadSound": "reloadBegin0009",
"BeginReloadSoundDelayTime": 0,
@@ -668,42 +799,57 @@
"ManualBeLoaded": true,
"AutoManualBeLoaded": false,
"BeLoadedTime": 0.9,
- "MinContinuousCount": 1,
- "MaxContinuousCount": 1,
+ "ContinuousCountRange": [
+ 1
+ ],
"TriggerInterval": 5,
"StartFiringSpeed": 150,
"FinalFiringSpeed": 150,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
- "MinFireBulletCount": 1,
- "MaxFireBulletCount": 1,
+ "FireBulletCountRange": [
+ 1
+ ],
"DelayedTime": 0,
"StartScatteringRange": 3,
"FinalScatteringRange": 60,
"ScatteringRangeAddValue": 40,
"ScatteringRangeBackSpeed": 40,
"ScatteringRangeBackDelayTime": 0.8,
- "MinBacklash": 5,
- "MaxBacklash": 7,
+ "BacklashRange": [
+ 5,
+ 7
+ ],
"BacklashRegressionSpeed": 20,
"UpliftAngle": 15,
"DefaultAngle": 0,
"UpliftAngleRestore": 1,
"BulletId": "bullet0001",
- "BulletMaxHarm": 30,
- "BulletMinHarm": 30,
- "BulletMinDeviationAngle": 0,
- "BulletMaxDeviationAngle": 0,
- "BulletMaxSpeed": 600,
- "BulletMinSpeed": 620,
- "BulletMinDistance": 700,
- "BulletMaxDistance": 900,
+ "BulletHarmRange": [
+ 30
+ ],
+ "BulletDeviationAngleRange": [
+ 0
+ ],
+ "BulletSpeedRange": [
+ 600,
+ 620
+ ],
+ "BulletDistanceRange": [
+ 700,
+ 900
+ ],
"ShellId": "shell0003",
"ThrowShellDelayTime": 0.2,
"ThrowCollisionSize": {
"X": 20,
"Y": 15
},
+ "CanMeleeAttack": true,
+ "MeleeAttackHarmRange": [
+ 5,
+ 8
+ ],
"__ShootSound": "shooting0008",
"__BeginReloadSound": "reloadBegin0009",
"BeginReloadSoundDelayTime": 0,
@@ -740,42 +886,57 @@
"ManualBeLoaded": false,
"AutoManualBeLoaded": false,
"BeLoadedTime": 0,
- "MinContinuousCount": 1,
- "MaxContinuousCount": 1,
+ "ContinuousCountRange": [
+ 1
+ ],
"TriggerInterval": 0,
"StartFiringSpeed": 700,
"FinalFiringSpeed": 700,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
- "MinFireBulletCount": 1,
- "MaxFireBulletCount": 1,
+ "FireBulletCountRange": [
+ 1
+ ],
"DelayedTime": 0,
"StartScatteringRange": 3,
"FinalScatteringRange": 30,
"ScatteringRangeAddValue": 2,
"ScatteringRangeBackSpeed": 40,
"ScatteringRangeBackDelayTime": 0.3,
- "MinBacklash": 1,
- "MaxBacklash": 2,
+ "BacklashRange": [
+ 1,
+ 2
+ ],
"BacklashRegressionSpeed": 35,
"UpliftAngle": 5,
"DefaultAngle": 0,
"UpliftAngleRestore": 1,
"BulletId": "bullet0002",
- "BulletMaxHarm": 3,
- "BulletMinHarm": 3,
- "BulletMinDeviationAngle": 0,
- "BulletMaxDeviationAngle": 0,
- "BulletMaxSpeed": 320,
- "BulletMinSpeed": 340,
- "BulletMinDistance": 300,
- "BulletMaxDistance": 400,
+ "BulletHarmRange": [
+ 3
+ ],
+ "BulletDeviationAngleRange": [
+ 0
+ ],
+ "BulletSpeedRange": [
+ 320,
+ 340
+ ],
+ "BulletDistanceRange": [
+ 300,
+ 400
+ ],
"ShellId": "shell0001",
"ThrowShellDelayTime": 0,
"ThrowCollisionSize": {
"X": 20,
"Y": 15
},
+ "CanMeleeAttack": true,
+ "MeleeAttackHarmRange": [
+ 5,
+ 8
+ ],
"__ShootSound": "shooting0002",
"__BeginReloadSound": "reloadBegin0005",
"BeginReloadSoundDelayTime": 0.2,
@@ -812,42 +973,57 @@
"ManualBeLoaded": false,
"AutoManualBeLoaded": false,
"BeLoadedTime": 0,
- "MinContinuousCount": 5,
- "MaxContinuousCount": 5,
+ "ContinuousCountRange": [
+ 5
+ ],
"TriggerInterval": 3.5,
"StartFiringSpeed": 700,
"FinalFiringSpeed": 700,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
- "MinFireBulletCount": 1,
- "MaxFireBulletCount": 1,
+ "FireBulletCountRange": [
+ 1
+ ],
"DelayedTime": 0,
"StartScatteringRange": 3,
"FinalScatteringRange": 30,
"ScatteringRangeAddValue": 2,
"ScatteringRangeBackSpeed": 30,
"ScatteringRangeBackDelayTime": 0.3,
- "MinBacklash": 1,
- "MaxBacklash": 2,
+ "BacklashRange": [
+ 1,
+ 2
+ ],
"BacklashRegressionSpeed": 35,
"UpliftAngle": 5,
"DefaultAngle": 0,
"UpliftAngleRestore": 1,
"BulletId": "bullet0002",
- "BulletMaxHarm": 3,
- "BulletMinHarm": 3,
- "BulletMinDeviationAngle": 0,
- "BulletMaxDeviationAngle": 0,
- "BulletMaxSpeed": 320,
- "BulletMinSpeed": 340,
- "BulletMinDistance": 300,
- "BulletMaxDistance": 400,
+ "BulletHarmRange": [
+ 3
+ ],
+ "BulletDeviationAngleRange": [
+ 0
+ ],
+ "BulletSpeedRange": [
+ 320,
+ 340
+ ],
+ "BulletDistanceRange": [
+ 300,
+ 400
+ ],
"ShellId": "shell0001",
"ThrowShellDelayTime": 0,
"ThrowCollisionSize": {
"X": 20,
"Y": 15
},
+ "CanMeleeAttack": true,
+ "MeleeAttackHarmRange": [
+ 5,
+ 8
+ ],
"__ShootSound": "shooting0002",
"__BeginReloadSound": "reloadBegin0005",
"BeginReloadSoundDelayTime": 0.2,
@@ -884,42 +1060,57 @@
"ManualBeLoaded": false,
"AutoManualBeLoaded": false,
"BeLoadedTime": 0,
- "MinContinuousCount": 1,
- "MaxContinuousCount": 1,
+ "ContinuousCountRange": [
+ 1
+ ],
"TriggerInterval": 0,
"StartFiringSpeed": 700,
"FinalFiringSpeed": 700,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
- "MinFireBulletCount": 1,
- "MaxFireBulletCount": 1,
+ "FireBulletCountRange": [
+ 1
+ ],
"DelayedTime": 0,
"StartScatteringRange": 6,
"FinalScatteringRange": 60,
"ScatteringRangeAddValue": 3,
"ScatteringRangeBackSpeed": 50,
"ScatteringRangeBackDelayTime": 0.3,
- "MinBacklash": 1,
- "MaxBacklash": 2,
+ "BacklashRange": [
+ 1,
+ 2
+ ],
"BacklashRegressionSpeed": 35,
"UpliftAngle": 5,
"DefaultAngle": 0,
"UpliftAngleRestore": 1,
"BulletId": "bullet0003",
- "BulletMaxHarm": 3,
- "BulletMinHarm": 3,
- "BulletMinDeviationAngle": 0,
- "BulletMaxDeviationAngle": 0,
- "BulletMaxSpeed": 300,
- "BulletMinSpeed": 330,
- "BulletMinDistance": 270,
- "BulletMaxDistance": 360,
+ "BulletHarmRange": [
+ 3
+ ],
+ "BulletDeviationAngleRange": [
+ 0
+ ],
+ "BulletSpeedRange": [
+ 300,
+ 330
+ ],
+ "BulletDistanceRange": [
+ 270,
+ 360
+ ],
"ShellId": "shell0001",
"ThrowShellDelayTime": 0,
"ThrowCollisionSize": {
"X": 20,
"Y": 15
},
+ "CanMeleeAttack": true,
+ "MeleeAttackHarmRange": [
+ 5,
+ 8
+ ],
"__ShootSound": "shooting0007",
"__BeginReloadSound": "reloadBegin0006",
"BeginReloadSoundDelayTime": 0.2,
@@ -956,42 +1147,57 @@
"ManualBeLoaded": false,
"AutoManualBeLoaded": false,
"BeLoadedTime": 0,
- "MinContinuousCount": 10,
- "MaxContinuousCount": 10,
+ "ContinuousCountRange": [
+ 10
+ ],
"TriggerInterval": 5,
"StartFiringSpeed": 200,
"FinalFiringSpeed": 200,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
- "MinFireBulletCount": 1,
- "MaxFireBulletCount": 1,
+ "FireBulletCountRange": [
+ 1
+ ],
"DelayedTime": 0,
"StartScatteringRange": 10,
"FinalScatteringRange": 30,
"ScatteringRangeAddValue": 3,
"ScatteringRangeBackSpeed": 50,
"ScatteringRangeBackDelayTime": 0.3,
- "MinBacklash": 1,
- "MaxBacklash": 2,
+ "BacklashRange": [
+ 1,
+ 2
+ ],
"BacklashRegressionSpeed": 35,
"UpliftAngle": 5,
"DefaultAngle": 0,
"UpliftAngleRestore": 1,
"BulletId": "bullet0003",
- "BulletMaxHarm": 3,
- "BulletMinHarm": 3,
- "BulletMinDeviationAngle": 0,
- "BulletMaxDeviationAngle": 0,
- "BulletMaxSpeed": 300,
- "BulletMinSpeed": 330,
- "BulletMinDistance": 270,
- "BulletMaxDistance": 360,
+ "BulletHarmRange": [
+ 3
+ ],
+ "BulletDeviationAngleRange": [
+ 0
+ ],
+ "BulletSpeedRange": [
+ 300,
+ 330
+ ],
+ "BulletDistanceRange": [
+ 270,
+ 360
+ ],
"ShellId": "shell0001",
"ThrowShellDelayTime": 0,
"ThrowCollisionSize": {
"X": 20,
"Y": 15
},
+ "CanMeleeAttack": true,
+ "MeleeAttackHarmRange": [
+ 5,
+ 8
+ ],
"__ShootSound": "shooting0007",
"__BeginReloadSound": "reloadBegin0006",
"BeginReloadSoundDelayTime": 0.2,
diff --git a/DungeonShooting_Godot/resource/sprite/effects/Collision.png b/DungeonShooting_Godot/resource/sprite/effects/Collision.png
deleted file mode 100644
index f15c822..0000000
--- a/DungeonShooting_Godot/resource/sprite/effects/Collision.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/effects/Collision.png.import b/DungeonShooting_Godot/resource/sprite/effects/Collision.png.import
deleted file mode 100644
index a7cddfb..0000000
--- a/DungeonShooting_Godot/resource/sprite/effects/Collision.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dwa4chrugc6b1"
-path="res://.godot/imported/Collision.png-c44899b0822a30bd5fe788c9b566e1c7.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/effects/Collision.png"
-dest_files=["res://.godot/imported/Collision.png-c44899b0822a30bd5fe788c9b566e1c7.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/Effect1.png b/DungeonShooting_Godot/resource/sprite/effects/Effect1.png
deleted file mode 100644
index 51ef9a9..0000000
--- a/DungeonShooting_Godot/resource/sprite/effects/Effect1.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/effects/Effect1.png.import b/DungeonShooting_Godot/resource/sprite/effects/Effect1.png.import
deleted file mode 100644
index 73c78cc..0000000
--- a/DungeonShooting_Godot/resource/sprite/effects/Effect1.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://csud4e6kc3iku"
-path="res://.godot/imported/Effect1.png-851e49cafde0258e42b0cba6b7034139.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/effects/Effect1.png"
-dest_files=["res://.godot/imported/Effect1.png-851e49cafde0258e42b0cba6b7034139.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/KnifeHit1.png b/DungeonShooting_Godot/resource/sprite/effects/KnifeHit1.png
deleted file mode 100644
index 83465d0..0000000
--- a/DungeonShooting_Godot/resource/sprite/effects/KnifeHit1.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/effects/KnifeHit1.png.import b/DungeonShooting_Godot/resource/sprite/effects/KnifeHit1.png.import
deleted file mode 100644
index 1e10427..0000000
--- a/DungeonShooting_Godot/resource/sprite/effects/KnifeHit1.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://dx07ta0asnmuw"
-path="res://.godot/imported/KnifeHit1.png-6ddd3aef14cf0bb7d2f668cd41ac74d0.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/effects/KnifeHit1.png"
-dest_files=["res://.godot/imported/KnifeHit1.png-6ddd3aef14cf0bb7d2f668cd41ac74d0.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/ShotFire.png b/DungeonShooting_Godot/resource/sprite/effects/ShotFire.png
deleted file mode 100644
index 5c6d63a..0000000
--- a/DungeonShooting_Godot/resource/sprite/effects/ShotFire.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/effects/ShotFire.png.import b/DungeonShooting_Godot/resource/sprite/effects/ShotFire.png.import
deleted file mode 100644
index 6eda108..0000000
--- a/DungeonShooting_Godot/resource/sprite/effects/ShotFire.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://b0jsyrbk4bydt"
-path="res://.godot/imported/ShotFire.png-19fbeb61d685dfc2c763d73aa70d548b.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/effects/ShotFire.png"
-dest_files=["res://.godot/imported/ShotFire.png-19fbeb61d685dfc2c763d73aa70d548b.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/Smoke.png b/DungeonShooting_Godot/resource/sprite/effects/Smoke.png
deleted file mode 100644
index f358c57..0000000
--- a/DungeonShooting_Godot/resource/sprite/effects/Smoke.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/effects/Smoke.png.import b/DungeonShooting_Godot/resource/sprite/effects/Smoke.png.import
deleted file mode 100644
index 11eadf7..0000000
--- a/DungeonShooting_Godot/resource/sprite/effects/Smoke.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://h7hkgbwj1li"
-path="res://.godot/imported/Smoke.png-6cf8f8f0055f43a859d02942814cba94.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/effects/Smoke.png"
-dest_files=["res://.godot/imported/Smoke.png-6cf8f8f0055f43a859d02942814cba94.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/Effect1.png b/DungeonShooting_Godot/resource/sprite/effects/common/Effect1.png
new file mode 100644
index 0000000..51ef9a9
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/common/Effect1.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/effects/common/Effect1.png.import b/DungeonShooting_Godot/resource/sprite/effects/common/Effect1.png.import
new file mode 100644
index 0000000..ded10aa
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/common/Effect1.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://csud4e6kc3iku"
+path="res://.godot/imported/Effect1.png-b381c54ce9f36be8da8d9d5787e0d539.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/effects/common/Effect1.png"
+dest_files=["res://.godot/imported/Effect1.png-b381c54ce9f36be8da8d9d5787e0d539.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/Smoke.png b/DungeonShooting_Godot/resource/sprite/effects/common/Smoke.png
new file mode 100644
index 0000000..f358c57
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/common/Smoke.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/effects/common/Smoke.png.import b/DungeonShooting_Godot/resource/sprite/effects/common/Smoke.png.import
new file mode 100644
index 0000000..d7f7f6e
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/common/Smoke.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://h7hkgbwj1li"
+path="res://.godot/imported/Smoke.png-c890fc56df0c1a3ef083465f2627ab8b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/effects/common/Smoke.png"
+dest_files=["res://.godot/imported/Smoke.png-c890fc56df0c1a3ef083465f2627ab8b.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/weapon/Collision1.png b/DungeonShooting_Godot/resource/sprite/effects/weapon/Collision1.png
new file mode 100644
index 0000000..f15c822
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/weapon/Collision1.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/effects/weapon/Collision1.png.import b/DungeonShooting_Godot/resource/sprite/effects/weapon/Collision1.png.import
new file mode 100644
index 0000000..1737a56
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/weapon/Collision1.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dwa4chrugc6b1"
+path="res://.godot/imported/Collision1.png-21b57f1716aaa61033dc15fa90c3af13.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/effects/weapon/Collision1.png"
+dest_files=["res://.godot/imported/Collision1.png-21b57f1716aaa61033dc15fa90c3af13.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/weapon/KnifeHit1.png b/DungeonShooting_Godot/resource/sprite/effects/weapon/KnifeHit1.png
new file mode 100644
index 0000000..83465d0
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/weapon/KnifeHit1.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/effects/weapon/KnifeHit1.png.import b/DungeonShooting_Godot/resource/sprite/effects/weapon/KnifeHit1.png.import
new file mode 100644
index 0000000..890932d
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/weapon/KnifeHit1.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dx07ta0asnmuw"
+path="res://.godot/imported/KnifeHit1.png-2f433b2240ee3b74ce7f49e4905f3ded.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/effects/weapon/KnifeHit1.png"
+dest_files=["res://.godot/imported/KnifeHit1.png-2f433b2240ee3b74ce7f49e4905f3ded.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/weapon/MeleeAttack1.png b/DungeonShooting_Godot/resource/sprite/effects/weapon/MeleeAttack1.png
new file mode 100644
index 0000000..c22890a
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/weapon/MeleeAttack1.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/effects/weapon/MeleeAttack1.png.import b/DungeonShooting_Godot/resource/sprite/effects/weapon/MeleeAttack1.png.import
new file mode 100644
index 0000000..1faa5b9
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/weapon/MeleeAttack1.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://7jhe2mmctmr1"
+path="res://.godot/imported/MeleeAttack1.png-fcea1547355ce99fe204cf5180b8c02d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/effects/weapon/MeleeAttack1.png"
+dest_files=["res://.godot/imported/MeleeAttack1.png-fcea1547355ce99fe204cf5180b8c02d.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/weapon/ShotFire.png b/DungeonShooting_Godot/resource/sprite/effects/weapon/ShotFire.png
new file mode 100644
index 0000000..5c6d63a
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/weapon/ShotFire.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/effects/weapon/ShotFire.png.import b/DungeonShooting_Godot/resource/sprite/effects/weapon/ShotFire.png.import
new file mode 100644
index 0000000..66623d6
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/effects/weapon/ShotFire.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b0jsyrbk4bydt"
+path="res://.godot/imported/ShotFire.png-c837a3bb80e273a615c459f36fadc870.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/effects/weapon/ShotFire.png"
+dest_files=["res://.godot/imported/ShotFire.png-c837a3bb80e273a615c459f36fadc870.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/effect/KnifeHit1.tres b/DungeonShooting_Godot/resource/spriteFrames/effect/KnifeHit1.tres
index a491979..e519ec9 100644
--- a/DungeonShooting_Godot/resource/spriteFrames/effect/KnifeHit1.tres
+++ b/DungeonShooting_Godot/resource/spriteFrames/effect/KnifeHit1.tres
@@ -1,6 +1,6 @@
[gd_resource type="SpriteFrames" load_steps=8 format=3 uid="uid://dj8o7ws03bik4"]
-[ext_resource type="Texture2D" uid="uid://dx07ta0asnmuw" path="res://resource/sprite/effects/KnifeHit1.png" id="1_0yl3h"]
+[ext_resource type="Texture2D" uid="uid://dx07ta0asnmuw" path="res://resource/sprite/effects/weapon/KnifeHit1.png" id="1_0yl3h"]
[sub_resource type="AtlasTexture" id="1"]
atlas = ExtResource("1_0yl3h")
diff --git a/DungeonShooting_Godot/src/config/ExcelConfig_Weapon.cs b/DungeonShooting_Godot/src/config/ExcelConfig_Weapon.cs
index 7c87cef..8f2f8ec 100644
--- a/DungeonShooting_Godot/src/config/ExcelConfig_Weapon.cs
+++ b/DungeonShooting_Godot/src/config/ExcelConfig_Weapon.cs
@@ -131,16 +131,11 @@
public float BeLoadedTime;
///
- /// 连续发射最小次数, 仅当 'ContinuousShoot' 为 false 时生效
+ /// 连续发射次数范围, 仅当 'ContinuousShoot' 为 false 时生效
+ /// 格式为[value]或者[min,max]
///
[JsonInclude]
- public int MinContinuousCount;
-
- ///
- /// 连续发射最大次数, 仅当 'ContinuousShoot' 为 false 时生效
- ///
- [JsonInclude]
- public int MaxContinuousCount;
+ public int[] ContinuousCountRange;
///
/// 按下一次扳机后需要多长时间才能再次感应按下
@@ -173,16 +168,11 @@
public float FiringSpeedBackSpeed;
///
- /// 单次开火发射子弹最小数量
+ /// 单次开火发射子弹数量范围
+ /// 格式为[value]或者[min,max]
///
[JsonInclude]
- public int MinFireBulletCount;
-
- ///
- /// 单次开火发射子弹最大数量
- ///
- [JsonInclude]
- public int MaxFireBulletCount;
+ public int[] FireBulletCountRange;
///
/// 从按下扳机到发射第一发子弹的延时时, 如果中途松开扳机, 那么延时时间会重新计算, 必须将 'LooseShoot' 设置为 false
@@ -221,16 +211,11 @@
public float ScatteringRangeBackDelayTime;
///
- /// 最小后坐力 (仅用于开火后武器身抖动)
+ /// 后坐力范围 (仅用于开火后武器身抖动)
+ /// 格式为[value]或者[min,max]
///
[JsonInclude]
- public float MinBacklash;
-
- ///
- /// 最大后坐力 (仅用于开火后武器身抖动)
- ///
- [JsonInclude]
- public float MaxBacklash;
+ public float[] BacklashRange;
///
/// 后坐力偏移回归回归速度
@@ -263,53 +248,33 @@
public string BulletId;
///
- /// 子弹造成的最大伤害
+ /// 子弹造成的伤害范围
+ /// 格式为[value]或者[min,max]
///
[JsonInclude]
- public int BulletMaxHarm;
+ public int[] BulletHarmRange;
///
- /// 子弹造成的最小伤害
+ /// 子弹偏移角度范围
+ /// 用于设置子弹偏移朝向, 该属性和射半径效果类似, 但与其不同的是, 散射半径是用来控制枪口朝向的, 而该属性是控制子弹朝向的, 可用于制作霰弹枪子弹效果
+ /// 格式为[value]或者[min,max]
///
[JsonInclude]
- public int BulletMinHarm;
+ public float[] BulletDeviationAngleRange;
///
- /// 子弹最小偏移角度
- /// 用于设置子弹偏移朝向, 该属性和射半径效果类似, 但与其不同的是, 散射半径是用来控制枪口朝向的, 而该属性是控制子弹朝向的, 可用于制作霰弹枪子弹效果
+ /// 子弹初速度范围
+ /// 格式为[value]或者[min,max]
///
[JsonInclude]
- public float BulletMinDeviationAngle;
+ public float[] BulletSpeedRange;
///
- /// 子弹最大偏移角度
+ /// 子弹飞行距离范围
+ /// 格式为[value]或者[min,max]
///
[JsonInclude]
- public float BulletMaxDeviationAngle;
-
- ///
- /// 子弹最大初速度
- ///
- [JsonInclude]
- public float BulletMaxSpeed;
-
- ///
- /// 子弹最小初速度
- ///
- [JsonInclude]
- public float BulletMinSpeed;
-
- ///
- /// 子弹飞行最小距离
- ///
- [JsonInclude]
- public float BulletMinDistance;
-
- ///
- /// 子弹飞行最大距离
- ///
- [JsonInclude]
- public float BulletMaxDistance;
+ public float[] BulletDistanceRange;
///
/// 默认抛出的弹壳
@@ -331,6 +296,19 @@
public SerializeVector2 ThrowCollisionSize;
///
+ /// 是否可以触发近战攻击
+ ///
+ [JsonInclude]
+ public bool CanMeleeAttack;
+
+ ///
+ /// 近战攻击伤害范围
+ /// 格式为格式为[value]或者[min,max]
+ ///
+ [JsonInclude]
+ public int[] MeleeAttackHarmRange;
+
+ ///
/// 射击音效
///
public Sound ShootSound;
@@ -439,39 +417,34 @@
inst.ManualBeLoaded = ManualBeLoaded;
inst.AutoManualBeLoaded = AutoManualBeLoaded;
inst.BeLoadedTime = BeLoadedTime;
- inst.MinContinuousCount = MinContinuousCount;
- inst.MaxContinuousCount = MaxContinuousCount;
+ inst.ContinuousCountRange = ContinuousCountRange;
inst.TriggerInterval = TriggerInterval;
inst.StartFiringSpeed = StartFiringSpeed;
inst.FinalFiringSpeed = FinalFiringSpeed;
inst.FiringSpeedAddSpeed = FiringSpeedAddSpeed;
inst.FiringSpeedBackSpeed = FiringSpeedBackSpeed;
- inst.MinFireBulletCount = MinFireBulletCount;
- inst.MaxFireBulletCount = MaxFireBulletCount;
+ inst.FireBulletCountRange = FireBulletCountRange;
inst.DelayedTime = DelayedTime;
inst.StartScatteringRange = StartScatteringRange;
inst.FinalScatteringRange = FinalScatteringRange;
inst.ScatteringRangeAddValue = ScatteringRangeAddValue;
inst.ScatteringRangeBackSpeed = ScatteringRangeBackSpeed;
inst.ScatteringRangeBackDelayTime = ScatteringRangeBackDelayTime;
- inst.MinBacklash = MinBacklash;
- inst.MaxBacklash = MaxBacklash;
+ inst.BacklashRange = BacklashRange;
inst.BacklashRegressionSpeed = BacklashRegressionSpeed;
inst.UpliftAngle = UpliftAngle;
inst.DefaultAngle = DefaultAngle;
inst.UpliftAngleRestore = UpliftAngleRestore;
inst.BulletId = BulletId;
- inst.BulletMaxHarm = BulletMaxHarm;
- inst.BulletMinHarm = BulletMinHarm;
- inst.BulletMinDeviationAngle = BulletMinDeviationAngle;
- inst.BulletMaxDeviationAngle = BulletMaxDeviationAngle;
- inst.BulletMaxSpeed = BulletMaxSpeed;
- inst.BulletMinSpeed = BulletMinSpeed;
- inst.BulletMinDistance = BulletMinDistance;
- inst.BulletMaxDistance = BulletMaxDistance;
+ inst.BulletHarmRange = BulletHarmRange;
+ inst.BulletDeviationAngleRange = BulletDeviationAngleRange;
+ inst.BulletSpeedRange = BulletSpeedRange;
+ inst.BulletDistanceRange = BulletDistanceRange;
inst.ShellId = ShellId;
inst.ThrowShellDelayTime = ThrowShellDelayTime;
inst.ThrowCollisionSize = ThrowCollisionSize;
+ inst.CanMeleeAttack = CanMeleeAttack;
+ inst.MeleeAttackHarmRange = MeleeAttackHarmRange;
inst.ShootSound = ShootSound;
inst.BeginReloadSound = BeginReloadSound;
inst.BeginReloadSoundDelayTime = BeginReloadSoundDelayTime;
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
index d5c52fa..fd0bd6d 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
@@ -425,7 +425,7 @@
_prevAnimationFrame = frame;
IsShowShadow = true;
- CalcTransform();
+ CalcShadowTransform();
ShadowSprite.Visible = true;
}
@@ -659,7 +659,7 @@
{
//注意需要延时调用
CallDeferred(nameof(ShowShadowSprite));
- CalcTransform();
+ CalcShadowTransform();
}
}
else
@@ -1008,7 +1008,7 @@
_prevAnimationFrame = frame;
//计算阴影
- CalcTransform();
+ CalcShadowTransform();
}
// Hit 动画
@@ -1136,7 +1136,7 @@
///
/// 重新计算物体阴影的位置和旋转信息, 无论是否显示阴影
///
- public void CalcTransform()
+ public void CalcShadowTransform()
{
//缩放
ShadowSprite.Scale = AnimatedSprite.Scale;
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
index a94b145..8b3dd8a 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
@@ -188,8 +188,8 @@
_activityRegisterMap.Add("shell0001", new RegisterActivityData("res://prefab/shell/Shell0001.tscn", ExcelConfig.ActivityObject_Map["shell0001"]));
_activityRegisterMap.Add("shell0002", new RegisterActivityData("res://prefab/shell/Shell0002.tscn", ExcelConfig.ActivityObject_Map["shell0002"]));
_activityRegisterMap.Add("shell0003", new RegisterActivityData("res://prefab/shell/Shell0003.tscn", ExcelConfig.ActivityObject_Map["shell0003"]));
- _activityRegisterMap.Add("effect0001", new RegisterActivityData("res://prefab/effect/activityObject/Effect0001.tscn", ExcelConfig.ActivityObject_Map["effect0001"]));
- _activityRegisterMap.Add("prop0001", new RegisterActivityData("res://prefab/prop/buff/BuffProp0001.tscn", ExcelConfig.ActivityObject_Map["prop0001"]));
+ _activityRegisterMap.Add("effect0001", new RegisterActivityData("res://prefab/effect/enemy/Effect0001.tscn", ExcelConfig.ActivityObject_Map["effect0001"]));
+ _activityRegisterMap.Add("prop0001", new RegisterActivityData("res://prefab/effect/enemy/Effect0001.tscn", ExcelConfig.ActivityObject_Map["prop0001"]));
_activityRegisterMap.Add("prop0002", new RegisterActivityData("res://prefab/prop/buff/BuffProp0002.tscn", ExcelConfig.ActivityObject_Map["prop0002"]));
_activityRegisterMap.Add("prop0003", new RegisterActivityData("res://prefab/prop/buff/BuffProp0003.tscn", ExcelConfig.ActivityObject_Map["prop0003"]));
_activityRegisterMap.Add("prop0004", new RegisterActivityData("res://prefab/prop/buff/BuffProp0004.tscn", ExcelConfig.ActivityObject_Map["prop0004"]));
diff --git a/DungeonShooting_Godot/src/framework/common/SeedRandom.cs b/DungeonShooting_Godot/src/framework/common/SeedRandom.cs
index 35da336..6fd42c4 100644
--- a/DungeonShooting_Godot/src/framework/common/SeedRandom.cs
+++ b/DungeonShooting_Godot/src/framework/common/SeedRandom.cs
@@ -78,6 +78,22 @@
}
///
+ /// 根据配置表中配置的范围数据, 随机返回范围内的一个值
+ ///
+ public int RandomConfigRange(int[] range)
+ {
+ return RandomRangeInt(Utils.GetConfigRangeStart(range), Utils.GetConfigRangeEnd(range));
+ }
+
+ ///
+ /// 根据配置表中配置的范围数据, 随机返回范围内的一个值
+ ///
+ public float RandomConfigRange(float[] range)
+ {
+ return RandomRangeFloat(Utils.GetConfigRangeStart(range), Utils.GetConfigRangeEnd(range));
+ }
+
+ ///
/// 随机返回其中一个参数
///
public T RandomChoose(params T[] list)
diff --git a/DungeonShooting_Godot/src/framework/common/Utils.cs b/DungeonShooting_Godot/src/framework/common/Utils.cs
index ea77986..762dad8 100644
--- a/DungeonShooting_Godot/src/framework/common/Utils.cs
+++ b/DungeonShooting_Godot/src/framework/common/Utils.cs
@@ -1,5 +1,3 @@
-using System;
-using System.Collections.Generic;
using Godot;
///
@@ -171,4 +169,46 @@
return pos.X >= rect2.Position.X && pos.X <= rect2.Position.X + rect2.Size.X &&
pos.Y >= rect2.Position.Y && pos.Y <= rect2.Position.Y + rect2.Size.Y;
}
+
+ ///
+ /// 返回区域起始值, 用于获取配置表范围配置数据
+ ///
+ public static int GetConfigRangeStart(int[] range)
+ {
+ return range[0];
+ }
+
+ ///
+ /// 返回区域结束值, 用于获取配置表范围配置数据
+ ///
+ public static int GetConfigRangeEnd(int[] range)
+ {
+ if (range.Length > 1)
+ {
+ return range[1];
+ }
+
+ return range[0];
+ }
+
+ ///
+ /// 返回区域起始值, 用于获取配置表范围配置数据
+ ///
+ public static float GetConfigRangeStart(float[] range)
+ {
+ return range[0];
+ }
+
+ ///
+ /// 返回区域结束值, 用于获取配置表范围配置数据
+ ///
+ public static float GetConfigRangeEnd(float[] range)
+ {
+ if (range.Length > 1)
+ {
+ return range[1];
+ }
+
+ return range[0];
+ }
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs b/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs
index 95a74c3..c00452d 100644
--- a/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs
+++ b/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs
@@ -298,7 +298,7 @@
activityObject.StartCoroutine(OnActivityObjectBirth(activityObject));
activityObject.PutDown(GetDefaultLayer(activityMark));
- var effect1 = ResourceManager.LoadAndInstantiate(ResourcePath.prefab_effect_Effect1_tscn);
+ var effect1 = ResourceManager.LoadAndInstantiate(ResourcePath.prefab_effect_common_Effect1_tscn);
effect1.Position = activityObject.Position + new Vector2(0, -activityMark.Altitude);
effect1.AddToActivityRoot(RoomLayerEnum.YSortLayer);
}
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/Bullet.cs b/DungeonShooting_Godot/src/game/activity/bullet/Bullet.cs
index feba74b..1448c50 100644
--- a/DungeonShooting_Godot/src/game/activity/bullet/Bullet.cs
+++ b/DungeonShooting_Godot/src/game/activity/bullet/Bullet.cs
@@ -89,7 +89,7 @@
if (lastSlideCollision != null)
{
//创建粒子特效
- var packedScene = ResourceManager.Load(ResourcePath.prefab_effect_BulletSmoke_tscn);
+ var packedScene = ResourceManager.Load(ResourcePath.prefab_effect_weapon_BulletSmoke_tscn);
var smoke = packedScene.Instantiate();
smoke.GlobalPosition = lastSlideCollision.GetPosition();
smoke.GlobalRotation = lastSlideCollision.GetNormal().Angle();
@@ -102,7 +102,7 @@
CurrFlyDistance += FlySpeed * delta;
if (CurrFlyDistance >= MaxDistance)
{
- var packedScene = ResourceManager.Load(ResourcePath.prefab_effect_BulletDisappear_tscn);
+ var packedScene = ResourceManager.Load(ResourcePath.prefab_effect_weapon_BulletDisappear_tscn);
var node = packedScene.Instantiate();
node.GlobalPosition = GlobalPosition;
node.AddToActivityRoot(RoomLayerEnum.YSortLayer);
@@ -116,7 +116,7 @@
var role = other.AsActivityObject();
if (role != null)
{
- var packedScene = ResourceManager.Load(ResourcePath.prefab_effect_BulletDisappear_tscn);
+ var packedScene = ResourceManager.Load(ResourcePath.prefab_effect_weapon_BulletDisappear_tscn);
var node = packedScene.Instantiate();
node.GlobalPosition = 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 c2ce92b..e66a0d7 100644
--- a/DungeonShooting_Godot/src/game/activity/role/Role.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/Role.cs
@@ -254,6 +254,8 @@
private long _invincibleFlashingId = -1;
//护盾恢复计时器
private float _shieldRecoveryTimer = 0;
+ //近战计时器
+ private float _meleeAttackTimer = 0;
///
/// 当血量改变时调用
@@ -405,6 +407,11 @@
_rollCoolingTimer -= delta;
}
+ if (_meleeAttackTimer > 0)
+ {
+ _meleeAttackTimer -= delta;
+ }
+
//看向目标
if (LookTarget != null)
{
@@ -894,18 +901,22 @@
///
public virtual void MeleeAttack()
{
- if (IsMeleeAttack)
+ if (IsMeleeAttack || _meleeAttackTimer > 0)
{
return;
}
- if (WeaponPack.ActiveItem != null)
+ if (WeaponPack.ActiveItem != null && WeaponPack.ActiveItem.Attribute.CanMeleeAttack)
{
IsMeleeAttack = true;
+ _meleeAttackTimer = RoleState.MeleeAttackTime;
+ MountLookTarget = false;
+
WeaponPack.ActiveItem.TriggerMeleeAttack(this);
//播放近战动画
PlayAnimation_MeleeAttack(() =>
{
+ MountLookTarget = true;
IsMeleeAttack = false;
});
}
diff --git a/DungeonShooting_Godot/src/game/activity/role/RoleState.cs b/DungeonShooting_Godot/src/game/activity/role/RoleState.cs
index f1c0e91..12085f2 100644
--- a/DungeonShooting_Godot/src/game/activity/role/RoleState.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/RoleState.cs
@@ -34,7 +34,7 @@
///
/// 单格护盾恢复时间, 单位: 秒
///
- public float ShieldRecoveryTime = 8;
+ public float ShieldRecoveryTime = 18;
///
/// 受伤后的无敌时间, 单位: 秒
@@ -47,6 +47,11 @@
public float ShieldInvincibleTime = 0.4f;
///
+ /// 近战攻击间隔时间
+ ///
+ public float MeleeAttackTime = 0.6f;
+
+ ///
/// 攻击/发射后计算伤害
///
public event Action> CalcDamageEvent;
diff --git a/DungeonShooting_Godot/src/game/activity/role/Role_Animation.cs b/DungeonShooting_Godot/src/game/activity/role/Role_Animation.cs
index fc3e853..14dac26 100644
--- a/DungeonShooting_Godot/src/game/activity/role/Role_Animation.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/Role_Animation.cs
@@ -10,8 +10,8 @@
///
public virtual void PlayAnimation_MeleeAttack(Action finish)
{
- MountLookTarget = false;
var r = MountPoint.RotationDegrees;
+ //var gp = MountPoint.GlobalPosition;
var p1 = MountPoint.Position;
var p2 = p1 + new Vector2(6, 0).Rotated(Mathf.DegToRad(r - 60));
var p3 = p1 + new Vector2(6, 0).Rotated(Mathf.DegToRad(r + 60));
@@ -21,21 +21,34 @@
tween.TweenProperty(MountPoint, "rotation_degrees", r - 60, 0.15);
tween.TweenProperty(MountPoint, "position", p2, 0.15);
+ tween.TweenProperty(MountPoint, "position", p2, 0.15);
tween.Chain();
-
+
tween.TweenCallback(Callable.From(() =>
{
MountPoint.RotationDegrees = r + 60;
MountPoint.Position = p3;
+ //重新计算武器阴影位置
+ var activeItem = WeaponPack.ActiveItem;
+ activeItem.CalcShadowTransform();
//创建屏幕抖动
if (Face == FaceDirection.Right)
{
- GameCamera.Main.DirectionalShake(Vector2.FromAngle(Mathf.DegToRad(r - 90)) * 5);
+ //GameCamera.Main.DirectionalShake(Vector2.FromAngle(Mathf.DegToRad(r - 90)) * 5);
+ GameCamera.Main.DirectionalShake(Vector2.FromAngle(Mathf.DegToRad(r - 180)) * 5);
}
else
{
- GameCamera.Main.DirectionalShake(Vector2.FromAngle(Mathf.DegToRad(270 - r)) * 5);
+ //GameCamera.Main.DirectionalShake(Vector2.FromAngle(Mathf.DegToRad(270 - r)) * 5);
+ GameCamera.Main.DirectionalShake(Vector2.FromAngle(Mathf.DegToRad(-r)) * 5);
}
+ //播放特效
+ var sprite = ResourceManager.LoadAndInstantiate(ResourcePath.prefab_effect_weapon_MeleeAttack1_tscn);
+ var localFirePosition = activeItem.GetLocalFirePosition();
+ localFirePosition.X *= 0.85f;
+ sprite.Position = p1 + localFirePosition.Rotated(Mathf.DegToRad(r));
+ sprite.RotationDegrees = r;
+ AddChild(sprite);
}));
tween.Chain();
@@ -45,7 +58,6 @@
tween.TweenCallback(Callable.From(() =>
{
- MountLookTarget = true;
finish();
}));
tween.Play();
diff --git a/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs b/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs
index 3c327dd..c333c8c 100644
--- a/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs
@@ -119,7 +119,7 @@
var effPos = Position + new Vector2(0, -Altitude);
//血液特效
- var blood = ResourceManager.LoadAndInstantiate(ResourcePath.prefab_effect_activityObject_EnemyBloodEffect_tscn);
+ var blood = ResourceManager.LoadAndInstantiate(ResourcePath.prefab_effect_enemy_EnemyBloodEffect_tscn);
blood.Position = effPos - new Vector2(0, 12);
blood.AddToActivityRoot(RoomLayerEnum.NormalLayer);
@@ -341,7 +341,7 @@
if (WeaponPack.ActiveItem != null)
{
var attribute = WeaponPack.ActiveItem.Attribute;
- return Mathf.Lerp(attribute.BulletMinDistance, attribute.BulletMaxDistance, weight);
+ return Mathf.Lerp(Utils.GetConfigRangeStart(attribute.BulletDistanceRange), Utils.GetConfigRangeEnd(attribute.BulletDistanceRange), weight);
}
return 0;
diff --git a/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiFollowUpState.cs b/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiFollowUpState.cs
index 7bf1d93..e0953eb 100644
--- a/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiFollowUpState.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiFollowUpState.cs
@@ -106,7 +106,7 @@
Master.EnemyAttack(delta);
//距离够近, 可以切换到环绕模式
- if (Master.GlobalPosition.DistanceSquaredTo(playerPos) <= Mathf.Pow(weapon.Attribute.BulletMinDistance, 2) * 0.7f)
+ if (Master.GlobalPosition.DistanceSquaredTo(playerPos) <= Mathf.Pow(Utils.GetConfigRangeStart(weapon.Attribute.BulletDistanceRange), 2) * 0.7f)
{
ChangeState(AiStateEnum.AiSurround);
}
diff --git a/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiSurroundState.cs b/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiSurroundState.cs
index e8c0827..1e7f4c4 100644
--- a/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiSurroundState.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/enemy/state/AiSurroundState.cs
@@ -161,7 +161,7 @@
private void RunOver(Vector2 targetPos)
{
var weapon = Master.WeaponPack.ActiveItem;
- var distance = (int)(weapon == null ? 150 : (weapon.Attribute.BulletMinDistance * 0.7f));
+ var distance = (int)(weapon == null ? 150 : (Utils.GetConfigRangeStart(weapon.Attribute.BulletDistanceRange) * 0.7f));
_nextPosition = new Vector2(
targetPos.X + Utils.Random.RandomRangeInt(-distance, distance),
targetPos.Y + Utils.Random.RandomRangeInt(-distance, distance)
diff --git a/DungeonShooting_Godot/src/game/activity/role/player/Player.cs b/DungeonShooting_Godot/src/game/activity/role/player/Player.cs
index 0227a42..4600a54 100644
--- a/DungeonShooting_Godot/src/game/activity/role/player/Player.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/player/Player.cs
@@ -125,14 +125,19 @@
Reload();
}
+ var meleeAttackFlag = false;
if (InputManager.MeleeAttack) //近战攻击
{
if (StateController.CurrState != PlayerStateEnum.Roll) //不能是翻滚状态
{
- MeleeAttack();
+ if (WeaponPack.ActiveItem != null && WeaponPack.ActiveItem.Attribute.CanMeleeAttack)
+ {
+ meleeAttackFlag = true;
+ MeleeAttack();
+ }
}
}
- else if (InputManager.Fire) //正常开火
+ if (!meleeAttackFlag && InputManager.Fire) //正常开火
{
if (StateController.CurrState != PlayerStateEnum.Roll) //不能是翻滚状态
{
diff --git a/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs b/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs
index 5ec5fd3..ace9948 100644
--- a/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs
+++ b/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs
@@ -765,8 +765,7 @@
//连发数量
if (!Attribute.ContinuousShoot)
{
- _continuousCount =
- Utils.Random.RandomRangeInt(Attribute.MinContinuousCount, Attribute.MaxContinuousCount);
+ _continuousCount = Utils.Random.RandomConfigRange(Attribute.ContinuousCountRange);
}
}
@@ -938,7 +937,7 @@
var fireRotation = tempRotation;
//开火发射的子弹数量
- var bulletCount = Utils.Random.RandomRangeInt(Attribute.MaxFireBulletCount, Attribute.MinFireBulletCount);
+ var bulletCount = Utils.Random.RandomConfigRange(Attribute.FireBulletCountRange);
if (Master != null)
{
bulletCount = Master.RoleState.CallCalcBulletCountEvent(this, bulletCount);
@@ -966,9 +965,9 @@
if (Master != null) //是否被拾起
{
//武器身位置
- var max = Mathf.Abs(Mathf.Max(Attribute.MaxBacklash, Attribute.MinBacklash));
+ var max = Mathf.Abs(Mathf.Max(Utils.GetConfigRangeStart(Attribute.BacklashRange), Utils.GetConfigRangeEnd(Attribute.BacklashRange)));
_currBacklashLength = Mathf.Clamp(
- _currBacklashLength - Utils.Random.RandomRangeFloat(Attribute.MinBacklash, Attribute.MaxBacklash),
+ _currBacklashLength - Utils.Random.RandomConfigRange(Attribute.BacklashRange),
-max, max
);
Position = new Vector2(_currBacklashLength, 0).Rotated(Rotation);
@@ -1744,6 +1743,22 @@
Master.ThrowWeapon(PackageIndex);
}
+ ///
+ /// 获取相对于武器本地坐标的开火位置
+ ///
+ public Vector2 GetLocalFirePosition()
+ {
+ return AnimatedSprite.Position + FirePoint.Position;
+ }
+
+ ///
+ /// 获取相对于武器本地坐标的抛壳位置
+ ///
+ public Vector2 GetLocalShellPosition()
+ {
+ return AnimatedSprite.Position + ShellPoint.Position;
+ }
+
//-------------------------- ----- 子弹相关 -----------------------------
///
@@ -1789,10 +1804,10 @@
///
protected Bullet ShootBullet(float fireRotation, string bulletId)
{
- var speed = Utils.Random.RandomRangeFloat(Attribute.BulletMinSpeed, Attribute.BulletMaxSpeed);
- var distance = Utils.Random.RandomRangeFloat(Attribute.BulletMinDistance, Attribute.BulletMaxDistance);
+ var speed = Utils.Random.RandomConfigRange(Attribute.BulletSpeedRange);
+ var distance = Utils.Random.RandomConfigRange(Attribute.BulletDistanceRange);
var deviationAngle =
- Utils.Random.RandomRangeFloat(Attribute.BulletMinDeviationAngle, Attribute.BulletMaxDeviationAngle);
+ Utils.Random.RandomConfigRange(Attribute.BulletDeviationAngleRange);
if (Master != null)
{
speed = Master.RoleState.CallCalcBulletSpeedEvent(this, speed);
@@ -1812,8 +1827,8 @@
fireRotation + Mathf.DegToRad(deviationAngle),
attackLayer
);
- bullet.MinHarm = Attribute.BulletMinHarm;
- bullet.MaxHarm = Attribute.BulletMaxHarm;
+ bullet.MinHarm = Utils.GetConfigRangeStart(Attribute.BulletHarmRange);
+ bullet.MaxHarm = Utils.GetConfigRangeEnd(Attribute.BulletHarmRange);
bullet.PutDown(RoomLayerEnum.YSortLayer);
return bullet;
}
diff --git a/DungeonShooting_Godot/src/game/activity/weapon/gun/Gun.cs b/DungeonShooting_Godot/src/game/activity/weapon/gun/Gun.cs
index fe01cd4..0dfeaeb 100644
--- a/DungeonShooting_Godot/src/game/activity/weapon/gun/Gun.cs
+++ b/DungeonShooting_Godot/src/game/activity/weapon/gun/Gun.cs
@@ -15,11 +15,13 @@
}
//创建开火特效
- var packedScene = ResourceManager.Load(ResourcePath.prefab_effect_ShotFire_tscn);
- var sprite = packedScene.Instantiate();
- sprite.GlobalPosition = FirePoint.GlobalPosition;
- sprite.GlobalRotation = FirePoint.GlobalRotation;
- sprite.AddToActivityRoot(RoomLayerEnum.YSortLayer);
+ var packedScene = ResourceManager.Load(ResourcePath.prefab_effect_weapon_ShotFire_tscn);
+ var sprite = packedScene.Instantiate();
+ // sprite.GlobalPosition = FirePoint.GlobalPosition;
+ // sprite.GlobalRotation = FirePoint.GlobalRotation;
+ // sprite.AddToActivityRoot(RoomLayerEnum.YSortLayer);
+ sprite.Position = GetLocalFirePosition();
+ AddChild(sprite);
}
protected override void OnShoot(float fireRotation)
diff --git a/DungeonShooting_Godot/src/game/activity/weapon/knife/Knife.cs b/DungeonShooting_Godot/src/game/activity/weapon/knife/Knife.cs
index c754fa0..e9651c8 100644
--- a/DungeonShooting_Godot/src/game/activity/weapon/knife/Knife.cs
+++ b/DungeonShooting_Godot/src/game/activity/weapon/knife/Knife.cs
@@ -93,7 +93,7 @@
if (activityObject is Role role)
{
role.CallDeferred(nameof(Role.Hurt),
- Utils.Random.RandomRangeInt(Attribute.BulletMinHarm, Attribute.BulletMaxHarm), (role.GetCenterPosition() - GlobalPosition).Angle());
+ Utils.Random.RandomConfigRange(Attribute.BulletHarmRange), (role.GetCenterPosition() - GlobalPosition).Angle());
}
}
}
diff --git a/DungeonShooting_Godot/src/game/effects/AutoDestroyEffect.cs b/DungeonShooting_Godot/src/game/effects/AutoDestroyEffect.cs
deleted file mode 100644
index c8e2b97..0000000
--- a/DungeonShooting_Godot/src/game/effects/AutoDestroyEffect.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-
-using Godot;
-
-public partial class AutoDestroyEffect : GpuParticles2D
-{
- ///
- /// 延时销毁时间
- ///
- [Export]
- public float DelayTime = 1f;
-
- public override async void _Ready()
- {
- Emitting = true;
- var sceneTreeTimer = GetTree().CreateTimer(DelayTime);
- await ToSignal(sceneTreeTimer, Timer.SignalName.Timeout);
- QueueFree();
- }
-}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/effects/AutoDestroyParticles.cs b/DungeonShooting_Godot/src/game/effects/AutoDestroyParticles.cs
new file mode 100644
index 0000000..e7aba73
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/effects/AutoDestroyParticles.cs
@@ -0,0 +1,22 @@
+
+using Godot;
+
+///
+/// 到期自动销毁的粒子特效
+///
+public partial class AutoDestroyParticles : GpuParticles2D
+{
+ ///
+ /// 延时销毁时间
+ ///
+ [Export]
+ public float DelayTime { get; set; } = 1f;
+
+ public override async void _Ready()
+ {
+ Emitting = true;
+ var sceneTreeTimer = GetTree().CreateTimer(DelayTime);
+ await ToSignal(sceneTreeTimer, Timer.SignalName.Timeout);
+ QueueFree();
+ }
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/effects/AutoDestroySprite.cs b/DungeonShooting_Godot/src/game/effects/AutoDestroySprite.cs
new file mode 100644
index 0000000..857819d
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/effects/AutoDestroySprite.cs
@@ -0,0 +1,20 @@
+using Godot;
+
+///
+/// 到期自动销毁的帧动画
+///
+public partial class AutoDestroySprite : AnimatedSprite2D
+{
+ ///
+ /// 延时销毁时间
+ ///
+ [Export]
+ public float DelayTime { get; set; } = 1f;
+
+ public override async void _Ready()
+ {
+ var sceneTreeTimer = GetTree().CreateTimer(DelayTime);
+ await ToSignal(sceneTreeTimer, Timer.SignalName.Timeout);
+ QueueFree();
+ }
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/effects/Effect1.cs b/DungeonShooting_Godot/src/game/effects/Effect1.cs
index 7905f99..485bd80 100644
--- a/DungeonShooting_Godot/src/game/effects/Effect1.cs
+++ b/DungeonShooting_Godot/src/game/effects/Effect1.cs
@@ -1,6 +1,6 @@
using Godot;
-public partial class Effect1 : AutoDestroyEffect
+public partial class Effect1 : AutoDestroyParticles
{
public override void _Ready()
{
diff --git a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
index 3796f08..26f4baa 100644
--- a/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
+++ b/DungeonShooting_Godot/src/game/manager/ResourcePath.cs
@@ -14,13 +14,14 @@
public const string prefab_bullet_Bullet0002_tscn = "res://prefab/bullet/Bullet0002.tscn";
public const string prefab_bullet_Bullet0003_tscn = "res://prefab/bullet/Bullet0003.tscn";
public const string prefab_effect_Blood_tscn = "res://prefab/effect/Blood.tscn";
- public const string prefab_effect_BulletDisappear_tscn = "res://prefab/effect/BulletDisappear.tscn";
- public const string prefab_effect_BulletSmoke_tscn = "res://prefab/effect/BulletSmoke.tscn";
- public const string prefab_effect_Effect1_tscn = "res://prefab/effect/Effect1.tscn";
- public const string prefab_effect_FirePart_tscn = "res://prefab/effect/FirePart.tscn";
- public const string prefab_effect_ShotFire_tscn = "res://prefab/effect/ShotFire.tscn";
- public const string prefab_effect_activityObject_Effect0001_tscn = "res://prefab/effect/activityObject/Effect0001.tscn";
- public const string prefab_effect_activityObject_EnemyBloodEffect_tscn = "res://prefab/effect/activityObject/EnemyBloodEffect.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_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_FirePart_tscn = "res://prefab/effect/weapon/FirePart.tscn";
+ public const string prefab_effect_weapon_MeleeAttack1_tscn = "res://prefab/effect/weapon/MeleeAttack1.tscn";
+ public const string prefab_effect_weapon_ShotFire_tscn = "res://prefab/effect/weapon/ShotFire.tscn";
public const string prefab_map_RoomDoor_E_tscn = "res://prefab/map/RoomDoor_E.tscn";
public const string prefab_map_RoomDoor_N_tscn = "res://prefab/map/RoomDoor_N.tscn";
public const string prefab_map_RoomDoor_S_tscn = "res://prefab/map/RoomDoor_S.tscn";
@@ -136,13 +137,14 @@
public const string resource_sprite_bullet_bullet0003_png = "res://resource/sprite/bullet/bullet0003.png";
public const string resource_sprite_bullet_bullet2_png = "res://resource/sprite/bullet/bullet2.png";
public const string resource_sprite_effects_Circle_png = "res://resource/sprite/effects/Circle.png";
- public const string resource_sprite_effects_Collision_png = "res://resource/sprite/effects/Collision.png";
public const string resource_sprite_effects_debug_arrows_png = "res://resource/sprite/effects/debug_arrows.png";
- public const string resource_sprite_effects_Effect1_png = "res://resource/sprite/effects/Effect1.png";
public const string resource_sprite_effects_Explosion_png = "res://resource/sprite/effects/Explosion.png";
- public const string resource_sprite_effects_KnifeHit1_png = "res://resource/sprite/effects/KnifeHit1.png";
- public const string resource_sprite_effects_ShotFire_png = "res://resource/sprite/effects/ShotFire.png";
- public const string resource_sprite_effects_Smoke_png = "res://resource/sprite/effects/Smoke.png";
+ 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_weapon_Collision1_png = "res://resource/sprite/effects/weapon/Collision1.png";
+ public const string resource_sprite_effects_weapon_KnifeHit1_png = "res://resource/sprite/effects/weapon/KnifeHit1.png";
+ public const string resource_sprite_effects_weapon_MeleeAttack1_png = "res://resource/sprite/effects/weapon/MeleeAttack1.png";
+ public const string resource_sprite_effects_weapon_ShotFire_png = "res://resource/sprite/effects/weapon/ShotFire.png";
public const string resource_sprite_map_map1_16x16dungeoniiwallreconfigv04spritesheet_png = "res://resource/sprite/map/map1/16x16 dungeon ii wall reconfig v04 spritesheet.png";
public const string resource_sprite_map_map1_door1_down_png = "res://resource/sprite/map/map1/door1_down.png";
public const string resource_sprite_map_map1_website_txt = "res://resource/sprite/map/map1/website.txt";
@@ -171,6 +173,29 @@
public const string resource_sprite_role_enemy0001_enemy0001_Icon_png = "res://resource/sprite/role/enemy0001/enemy0001_Icon.png";
public const string resource_sprite_role_role0001_Role0001_png = "res://resource/sprite/role/role0001/Role0001.png";
public const string resource_sprite_role_role0001_Role0001_Icon_png = "res://resource/sprite/role/role0001/Role0001_Icon.png";
+ public const string resource_sprite_role_role0001_idle_Sprite0002_png = "res://resource/sprite/role/role0001/idle/Sprite-0002.png";
+ public const string resource_sprite_role_role0001_idle_Sprite0003_png = "res://resource/sprite/role/role0001/idle/Sprite-0003.png";
+ public const string resource_sprite_role_role0001_idle_Sprite0004_png = "res://resource/sprite/role/role0001/idle/Sprite-0004.png";
+ public const string resource_sprite_role_role0001_idle_Sprite0005_png = "res://resource/sprite/role/role0001/idle/Sprite-0005.png";
+ public const string resource_sprite_role_role0001_idle_Sprite0006_png = "res://resource/sprite/role/role0001/idle/Sprite-0006.png";
+ public const string resource_sprite_role_role0001_idle_Sprite0007_png = "res://resource/sprite/role/role0001/idle/Sprite-0007.png";
+ public const string resource_sprite_role_role0001_idle_Sprite0008_png = "res://resource/sprite/role/role0001/idle/Sprite-0008.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0002_png = "res://resource/sprite/role/role0001/roll/Sprite-0002.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0003_png = "res://resource/sprite/role/role0001/roll/Sprite-0003.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0004_png = "res://resource/sprite/role/role0001/roll/Sprite-0004.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0005_png = "res://resource/sprite/role/role0001/roll/Sprite-0005.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0006_png = "res://resource/sprite/role/role0001/roll/Sprite-0006.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0007_png = "res://resource/sprite/role/role0001/roll/Sprite-0007.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0008_png = "res://resource/sprite/role/role0001/roll/Sprite-0008.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0009_png = "res://resource/sprite/role/role0001/roll/Sprite-0009.png";
+ public const string resource_sprite_role_role0001_roll_Sprite0010_png = "res://resource/sprite/role/role0001/roll/Sprite-0010.png";
+ public const string resource_sprite_role_role0001_run_Sprite0002_png = "res://resource/sprite/role/role0001/run/Sprite-0002.png";
+ public const string resource_sprite_role_role0001_run_Sprite0003_png = "res://resource/sprite/role/role0001/run/Sprite-0003.png";
+ public const string resource_sprite_role_role0001_run_Sprite0004_png = "res://resource/sprite/role/role0001/run/Sprite-0004.png";
+ public const string resource_sprite_role_role0001_run_Sprite0005_png = "res://resource/sprite/role/role0001/run/Sprite-0005.png";
+ public const string resource_sprite_role_role0001_run_Sprite0006_png = "res://resource/sprite/role/role0001/run/Sprite-0006.png";
+ public const string resource_sprite_role_role0001_run_Sprite0007_png = "res://resource/sprite/role/role0001/run/Sprite-0007.png";
+ public const string resource_sprite_role_role0001_run_Sprite0008_png = "res://resource/sprite/role/role0001/run/Sprite-0008.png";
public const string resource_sprite_shell_Shell0001_png = "res://resource/sprite/shell/Shell0001.png";
public const string resource_sprite_shell_Shell0002_png = "res://resource/sprite/shell/Shell0002.png";
public const string resource_sprite_shell_Shell0003_png = "res://resource/sprite/shell/Shell0003.png";