diff --git a/DungeonShooting_Godot/excel/excelFile/ActivityObject.xlsx b/DungeonShooting_Godot/excel/excelFile/ActivityObject.xlsx
index 132add2..e8146c1 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/Weapon.xlsx b/DungeonShooting_Godot/excel/excelFile/Weapon.xlsx
index 27697d8..c92ea19 100644
--- a/DungeonShooting_Godot/excel/excelFile/Weapon.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/Weapon.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/prefab/bullet/Bullet0001.tscn b/DungeonShooting_Godot/prefab/bullet/Bullet0001.tscn
new file mode 100644
index 0000000..8c2a3c7
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/bullet/Bullet0001.tscn
@@ -0,0 +1,66 @@
+[gd_scene load_steps=9 format=3 uid="uid://bj4kmvt8jg1cf"]
+
+[ext_resource type="Script" path="res://src/game/item/bullet/Bullet.cs" id="1_82ma0"]
+[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_p12d3"]
+[ext_resource type="Texture2D" uid="uid://bu0b11hiuecxy" path="res://resource/sprite/bullet/bullet.png" id="3_hjgpe"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_5a4f2"]
+resource_local_to_scene = true
+shader = ExtResource("2_p12d3")
+shader_parameter/blend = Color(0, 0, 0, 0.470588)
+shader_parameter/schedule = 1
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_o0655"]
+resource_local_to_scene = true
+shader = ExtResource("2_p12d3")
+shader_parameter/blend = Color(1, 1, 1, 1)
+shader_parameter/schedule = 0
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_5wvmf"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("3_hjgpe")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_c0onq"]
+size = Vector2(44.72, 12)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_lcqb8"]
+size = Vector2(11, 4)
+
+[node name="Bullet0001" type="CharacterBody2D" node_paths=PackedStringArray("CollisionArea", "ShadowSprite", "AnimatedSprite", "Collision")]
+collision_layer = 2
+script = ExtResource("1_82ma0")
+CollisionArea = NodePath("CollisionArea")
+ShadowSprite = NodePath("ShadowSprite")
+AnimatedSprite = NodePath("AnimatedSprite")
+Collision = NodePath("Collision")
+
+[node name="ShadowSprite" type="Sprite2D" parent="."]
+z_index = -1
+material = SubResource("ShaderMaterial_5a4f2")
+
+[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
+modulate = Color(1.8, 1.8, 1.8, 1)
+material = SubResource("ShaderMaterial_o0655")
+sprite_frames = SubResource("SpriteFrames_5wvmf")
+
+[node name="CollisionArea" type="Area2D" parent="."]
+visible = false
+collision_layer = 0
+collision_mask = 0
+monitorable = false
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="CollisionArea"]
+position = Vector2(2.93353, 0)
+scale = Vector2(0.226586, 0.333333)
+shape = SubResource("RectangleShape2D_c0onq")
+
+[node name="Collision" type="CollisionShape2D" parent="."]
+position = Vector2(2.5, 0)
+shape = SubResource("RectangleShape2D_lcqb8")
diff --git a/DungeonShooting_Godot/prefab/bullet/Bullet0002.tscn b/DungeonShooting_Godot/prefab/bullet/Bullet0002.tscn
new file mode 100644
index 0000000..f951e9f
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/bullet/Bullet0002.tscn
@@ -0,0 +1,65 @@
+[gd_scene load_steps=9 format=3 uid="uid://bqkj0rn72ppge"]
+
+[ext_resource type="Script" path="res://src/game/item/bullet/Bullet.cs" id="1_wphe7"]
+[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_l3yjy"]
+[ext_resource type="Texture2D" uid="uid://ctsvj4y1t538u" path="res://resource/sprite/bullet/bullet3.png" id="3_nf7ic"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_5a4f2"]
+resource_local_to_scene = true
+shader = ExtResource("2_l3yjy")
+shader_parameter/blend = Color(0, 0, 0, 0.470588)
+shader_parameter/schedule = 1
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_o0655"]
+resource_local_to_scene = true
+shader = ExtResource("2_l3yjy")
+shader_parameter/blend = Color(1, 1, 1, 1)
+shader_parameter/schedule = 0
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_5wvmf"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("3_nf7ic")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_c0onq"]
+size = Vector2(44.72, 12)
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_e2yn3"]
+radius = 3.0
+
+[node name="Bullet0002" type="CharacterBody2D" node_paths=PackedStringArray("CollisionArea", "ShadowSprite", "AnimatedSprite", "Collision")]
+collision_layer = 2
+script = ExtResource("1_wphe7")
+CollisionArea = NodePath("CollisionArea")
+ShadowSprite = NodePath("ShadowSprite")
+AnimatedSprite = NodePath("AnimatedSprite")
+Collision = NodePath("Collision")
+
+[node name="ShadowSprite" type="Sprite2D" parent="."]
+z_index = -1
+material = SubResource("ShaderMaterial_5a4f2")
+
+[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
+modulate = Color(1.8, 1.8, 1.8, 1)
+material = SubResource("ShaderMaterial_o0655")
+sprite_frames = SubResource("SpriteFrames_5wvmf")
+
+[node name="CollisionArea" type="Area2D" parent="."]
+visible = false
+collision_layer = 0
+collision_mask = 0
+monitorable = false
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="CollisionArea"]
+position = Vector2(2.93353, 0)
+scale = Vector2(0.226586, 0.333333)
+shape = SubResource("RectangleShape2D_c0onq")
+
+[node name="Collision" type="CollisionShape2D" parent="."]
+shape = SubResource("CircleShape2D_e2yn3")
diff --git a/DungeonShooting_Godot/prefab/role/Enemy.tscn b/DungeonShooting_Godot/prefab/role/Enemy.tscn
index a4ebb0d..50a946a 100644
--- a/DungeonShooting_Godot/prefab/role/Enemy.tscn
+++ b/DungeonShooting_Godot/prefab/role/Enemy.tscn
@@ -1,6 +1,6 @@
[gd_scene load_steps=20 format=3 uid="uid://dbrig6dq441wo"]
-[ext_resource type="PackedScene" uid="uid://cyrcv2jdgr8cf" path="res://prefab/role/Role.tscn" id="1_p0w41"]
+[ext_resource type="PackedScene" uid="uid://cyrcv2jdgr8cf" path="res://prefab/role/RoleTemplate.tscn" id="1_p0w41"]
[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_xrpvd"]
[ext_resource type="Texture2D" uid="uid://chd2vtesap5cf" path="res://resource/sprite/role/enemy0001/Enemy0001.png" id="3_b8g1d"]
diff --git a/DungeonShooting_Godot/prefab/role/Player.tscn b/DungeonShooting_Godot/prefab/role/Player.tscn
deleted file mode 100644
index 6e8ec65..0000000
--- a/DungeonShooting_Godot/prefab/role/Player.tscn
+++ /dev/null
@@ -1,189 +0,0 @@
-[gd_scene load_steps=24 format=3 uid="uid://cp2uhtlb6h7k2"]
-
-[ext_resource type="Script" path="res://src/game/role/Player.cs" id="1_4exnp"]
-[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_8fdt4"]
-[ext_resource type="Texture2D" uid="uid://bhwhhg2dfsr26" path="res://resource/sprite/role/role2.png" id="3_66v5o"]
-[ext_resource type="Script" path="res://src/game/role/MountRotation.cs" id="4_r0uet"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_vejn8"]
-resource_local_to_scene = true
-shader = ExtResource("2_8fdt4")
-shader_parameter/blend = Color(0, 0, 0, 0.470588)
-shader_parameter/schedule = 1
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_0gb8j"]
-resource_local_to_scene = true
-shader = ExtResource("2_8fdt4")
-shader_parameter/blend = Color(1, 1, 1, 1)
-shader_parameter/schedule = 0
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_tmewn"]
-atlas = ExtResource("3_66v5o")
-region = Rect2(0, 0, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_dvg4a"]
-atlas = ExtResource("3_66v5o")
-region = Rect2(0, 24, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_kvuct"]
-atlas = ExtResource("3_66v5o")
-region = Rect2(16, 24, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_5op76"]
-atlas = ExtResource("3_66v5o")
-region = Rect2(32, 24, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_helyc"]
-atlas = ExtResource("3_66v5o")
-region = Rect2(48, 24, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_67mn8"]
-atlas = ExtResource("3_66v5o")
-region = Rect2(48, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_jeywq"]
-atlas = ExtResource("3_66v5o")
-region = Rect2(32, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_oycx8"]
-atlas = ExtResource("3_66v5o")
-region = Rect2(16, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_tjg1t"]
-atlas = ExtResource("3_66v5o")
-region = Rect2(0, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_2ltxw"]
-atlas = ExtResource("3_66v5o")
-region = Rect2(0, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_x1va1"]
-atlas = ExtResource("3_66v5o")
-region = Rect2(16, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_ic2p5"]
-atlas = ExtResource("3_66v5o")
-region = Rect2(32, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_j3hdu"]
-atlas = ExtResource("3_66v5o")
-region = Rect2(48, 48, 16, 24)
-
-[sub_resource type="SpriteFrames" id="SpriteFrames_3poqo"]
-animations = [{
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_tmewn")
-}],
-"loop": true,
-"name": &"default",
-"speed": 5.0
-}, {
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_dvg4a")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_kvuct")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_5op76")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_helyc")
-}],
-"loop": true,
-"name": &"idle",
-"speed": 7.0
-}, {
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_67mn8")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_jeywq")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_oycx8")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_tjg1t")
-}],
-"loop": true,
-"name": &"reverseRun",
-"speed": 10.0
-}, {
-"frames": [{
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_2ltxw")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_x1va1")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_ic2p5")
-}, {
-"duration": 1.0,
-"texture": SubResource("AtlasTexture_j3hdu")
-}],
-"loop": true,
-"name": &"run",
-"speed": 10.0
-}]
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_5pj80"]
-radius = 4.0
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_1eja2"]
-size = Vector2(12, 18)
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_n68nu"]
-size = Vector2(10, 16.5)
-
-[node name="Player" type="CharacterBody2D" node_paths=PackedStringArray("HurtArea", "BackMountPoint", "InteractiveArea", "ShadowSprite", "AnimatedSprite", "Collision")]
-script = ExtResource("1_4exnp")
-HurtArea = NodePath("HurtArea")
-BackMountPoint = NodePath("BackMountPoint")
-InteractiveArea = NodePath("InteractiveArea")
-ShadowSprite = NodePath("ShadowSprite")
-AnimatedSprite = NodePath("AnimatedSprite")
-Collision = NodePath("Collision")
-
-[node name="ShadowSprite" type="Sprite2D" parent="."]
-z_index = -1
-material = SubResource("ShaderMaterial_vejn8")
-
-[node name="BackMountPoint" type="Marker2D" parent="."]
-position = Vector2(0, -12)
-
-[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
-material = SubResource("ShaderMaterial_0gb8j")
-position = Vector2(0, -12)
-sprite_frames = SubResource("SpriteFrames_3poqo")
-
-[node name="Collision" type="CollisionShape2D" parent="."]
-position = Vector2(0, -4)
-shape = SubResource("CircleShape2D_5pj80")
-
-[node name="HurtArea" type="Area2D" parent="."]
-collision_layer = 0
-collision_mask = 0
-monitoring = false
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="HurtArea"]
-position = Vector2(0, -9)
-shape = SubResource("RectangleShape2D_1eja2")
-
-[node name="InteractiveArea" type="Area2D" parent="."]
-visible = false
-collision_layer = 0
-collision_mask = 4
-monitorable = false
-
-[node name="Collision" type="CollisionShape2D" parent="InteractiveArea"]
-position = Vector2(0, -5)
-shape = SubResource("RectangleShape2D_n68nu")
-
-[node name="MountPoint" type="Marker2D" parent="."]
-position = Vector2(1, -6)
-script = ExtResource("4_r0uet")
diff --git a/DungeonShooting_Godot/prefab/role/Role.tscn b/DungeonShooting_Godot/prefab/role/Role.tscn
deleted file mode 100644
index ac399cf..0000000
--- a/DungeonShooting_Godot/prefab/role/Role.tscn
+++ /dev/null
@@ -1,67 +0,0 @@
-[gd_scene load_steps=9 format=3 uid="uid://cyrcv2jdgr8cf"]
-
-[ext_resource type="Script" path="res://src/framework/activity/ActivityObjectTemplate.cs" id="1_vnmfw"]
-[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_mmtpy"]
-[ext_resource type="Script" path="res://src/game/role/MountRotation.cs" id="3_g6ktd"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_v2kfw"]
-resource_local_to_scene = true
-shader = ExtResource("2_mmtpy")
-shader_parameter/blend = Color(0, 0, 0, 0.470588)
-shader_parameter/schedule = 1
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_yif6x"]
-resource_local_to_scene = true
-shader = ExtResource("2_mmtpy")
-shader_parameter/blend = Color(1, 1, 1, 1)
-shader_parameter/schedule = 0
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_5pj80"]
-radius = 4.0
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_1eja2"]
-size = Vector2(12, 18)
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_n68nu"]
-size = Vector2(10, 16.5)
-
-[node name="Role" type="Node"]
-script = ExtResource("1_vnmfw")
-
-[node name="ShadowSprite" type="Sprite2D" parent="."]
-z_index = -1
-material = SubResource("ShaderMaterial_v2kfw")
-
-[node name="BackMountPoint" type="Marker2D" parent="."]
-position = Vector2(0, -12)
-
-[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
-material = SubResource("ShaderMaterial_yif6x")
-position = Vector2(0, -12)
-
-[node name="Collision" type="CollisionShape2D" parent="."]
-position = Vector2(0, -4)
-shape = SubResource("CircleShape2D_5pj80")
-
-[node name="HurtArea" type="Area2D" parent="."]
-collision_layer = 0
-collision_mask = 0
-monitoring = false
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="HurtArea"]
-position = Vector2(0, -9)
-shape = SubResource("RectangleShape2D_1eja2")
-
-[node name="InteractiveArea" type="Area2D" parent="."]
-visible = false
-collision_layer = 0
-collision_mask = 4
-monitorable = false
-
-[node name="Collision" type="CollisionShape2D" parent="InteractiveArea"]
-position = Vector2(0, -5)
-shape = SubResource("RectangleShape2D_n68nu")
-
-[node name="MountPoint" type="Marker2D" parent="."]
-position = Vector2(1, -6)
-script = ExtResource("3_g6ktd")
diff --git a/DungeonShooting_Godot/prefab/role/Role0001.tscn b/DungeonShooting_Godot/prefab/role/Role0001.tscn
new file mode 100644
index 0000000..adce875
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/role/Role0001.tscn
@@ -0,0 +1,37 @@
+[gd_scene load_steps=7 format=3 uid="uid://cxhrcytrx0kcf"]
+
+[ext_resource type="PackedScene" uid="uid://cyrcv2jdgr8cf" path="res://prefab/role/RoleTemplate.tscn" id="1_2wm0h"]
+[ext_resource type="Script" path="res://src/game/role/Player.cs" id="2_d2vk6"]
+[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_pvgbh"]
+[ext_resource type="SpriteFrames" uid="uid://n11thtali6es" path="res://resource/spriteFrames/Role0001.tres" id="4_qf1q4"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_lvutq"]
+resource_local_to_scene = true
+shader = ExtResource("2_pvgbh")
+shader_parameter/blend = Color(0, 0, 0, 0.470588)
+shader_parameter/schedule = 1
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_5ok5s"]
+resource_local_to_scene = true
+shader = ExtResource("2_pvgbh")
+shader_parameter/blend = Color(1, 1, 1, 1)
+shader_parameter/schedule = 0
+
+[node name="Role0001" node_paths=PackedStringArray("HurtArea", "MountPoint", "BackMountPoint", "InteractiveArea", "ShadowSprite", "AnimatedSprite", "Collision") instance=ExtResource("1_2wm0h")]
+collision_layer = 8
+script = ExtResource("2_d2vk6")
+HurtArea = NodePath("HurtArea")
+MountPoint = NodePath("MountPoint")
+BackMountPoint = NodePath("BackMountPoint")
+InteractiveArea = NodePath("InteractiveArea")
+ShadowSprite = NodePath("ShadowSprite")
+AnimatedSprite = NodePath("AnimatedSprite")
+Collision = NodePath("Collision")
+
+[node name="ShadowSprite" parent="." index="0"]
+material = SubResource("ShaderMaterial_lvutq")
+
+[node name="AnimatedSprite" parent="." index="2"]
+material = SubResource("ShaderMaterial_5ok5s")
+sprite_frames = ExtResource("4_qf1q4")
+frame_progress = 0.0995217
diff --git a/DungeonShooting_Godot/prefab/role/RoleTemplate.tscn b/DungeonShooting_Godot/prefab/role/RoleTemplate.tscn
new file mode 100644
index 0000000..d1d87cb
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/role/RoleTemplate.tscn
@@ -0,0 +1,65 @@
+[gd_scene load_steps=8 format=3 uid="uid://cyrcv2jdgr8cf"]
+
+[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="1_vuu4w"]
+[ext_resource type="Script" path="res://src/game/role/MountRotation.cs" id="2_22sl5"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_v2kfw"]
+resource_local_to_scene = true
+shader = ExtResource("1_vuu4w")
+shader_parameter/blend = Color(0, 0, 0, 0.470588)
+shader_parameter/schedule = 1
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_yif6x"]
+resource_local_to_scene = true
+shader = ExtResource("1_vuu4w")
+shader_parameter/blend = Color(1, 1, 1, 1)
+shader_parameter/schedule = 0
+
+[sub_resource type="CircleShape2D" id="CircleShape2D_5pj80"]
+radius = 4.0
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_1eja2"]
+size = Vector2(12, 18)
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_n68nu"]
+size = Vector2(10, 16.5)
+
+[node name="RoleTemplate" type="CharacterBody2D"]
+
+[node name="ShadowSprite" type="Sprite2D" parent="."]
+z_index = -1
+material = SubResource("ShaderMaterial_v2kfw")
+
+[node name="BackMountPoint" type="Marker2D" parent="."]
+position = Vector2(0, -12)
+
+[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
+material = SubResource("ShaderMaterial_yif6x")
+position = Vector2(0, -12)
+
+[node name="Collision" type="CollisionShape2D" parent="."]
+position = Vector2(0, -4)
+shape = SubResource("CircleShape2D_5pj80")
+
+[node name="HurtArea" type="Area2D" parent="."]
+collision_layer = 0
+collision_mask = 0
+monitoring = false
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="HurtArea"]
+position = Vector2(0, -9)
+shape = SubResource("RectangleShape2D_1eja2")
+
+[node name="InteractiveArea" type="Area2D" parent="."]
+visible = false
+collision_layer = 0
+collision_mask = 4
+monitorable = false
+
+[node name="Collision" type="CollisionShape2D" parent="InteractiveArea"]
+position = Vector2(0, -5)
+shape = SubResource("RectangleShape2D_n68nu")
+
+[node name="MountPoint" type="Marker2D" parent="."]
+position = Vector2(1, -6)
+script = ExtResource("2_22sl5")
diff --git a/DungeonShooting_Godot/prefab/shell/Shell0001.tscn b/DungeonShooting_Godot/prefab/shell/Shell0001.tscn
new file mode 100644
index 0000000..b11de73
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/shell/Shell0001.tscn
@@ -0,0 +1,44 @@
+[gd_scene load_steps=7 format=3 uid="uid://bj4yr6ru8nhwr"]
+
+[ext_resource type="Script" path="res://src/game/item/shell/Shell.cs" id="1_ph0ad"]
+[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_k705i"]
+[ext_resource type="Texture2D" uid="uid://dto03bc2qbhnj" path="res://resource/sprite/shell/shellCase.png" id="3_0fth1"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_px12l"]
+resource_local_to_scene = true
+shader = ExtResource("2_k705i")
+shader_parameter/blend = Color(0, 0, 0, 0.470588)
+shader_parameter/schedule = 1
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_7e6fo"]
+resource_local_to_scene = true
+shader = ExtResource("2_k705i")
+shader_parameter/blend = Color(1, 1, 1, 1)
+shader_parameter/schedule = 0
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_4huvy"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("3_0fth1")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[node name="Shell0001" type="CharacterBody2D" node_paths=PackedStringArray("ShadowSprite", "AnimatedSprite", "Collision")]
+script = ExtResource("1_ph0ad")
+ShadowSprite = NodePath("ShadowSprite")
+AnimatedSprite = NodePath("AnimatedSprite")
+Collision = NodePath("Collision")
+
+[node name="ShadowSprite" type="Sprite2D" parent="."]
+z_index = -1
+material = SubResource("ShaderMaterial_px12l")
+
+[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
+material = SubResource("ShaderMaterial_7e6fo")
+sprite_frames = SubResource("SpriteFrames_4huvy")
+
+[node name="Collision" type="CollisionShape2D" parent="."]
diff --git a/DungeonShooting_Godot/prefab/ui/RoomUI.tscn b/DungeonShooting_Godot/prefab/ui/RoomUI.tscn
index 9259402..8554aa3 100644
--- a/DungeonShooting_Godot/prefab/ui/RoomUI.tscn
+++ b/DungeonShooting_Godot/prefab/ui/RoomUI.tscn
@@ -11,7 +11,7 @@
[ext_resource type="Texture2D" uid="uid://dnpguajopuyd7" path="res://resource/sprite/ui/shieldSlot.png" id="9_spw0e"]
[ext_resource type="Texture2D" uid="uid://h25j6uka74tv" path="res://resource/sprite/ui/shieldBar.png" id="10_8lm6q"]
[ext_resource type="Texture2D" uid="uid://k621mhhkg65f" path="res://resource/sprite/ui/mapBar.png" id="11_yaqsk"]
-[ext_resource type="Texture2D" uid="uid://xafbhgrxmosy" path="res://resource/sprite/gun/gun4.png" id="12_o2big"]
+[ext_resource type="Texture2D" uid="uid://xafbhgrxmosy" path="res://resource/sprite/weapon/gun4.png" id="12_o2big"]
[sub_resource type="Gradient" id="1"]
colors = PackedColorArray(0.4, 0.498039, 1, 1, 0.4, 0.498039, 1, 0.313726)
diff --git a/DungeonShooting_Godot/prefab/weapon/Knife.tscn b/DungeonShooting_Godot/prefab/weapon/Knife.tscn
index c1b92fa..f940453 100644
--- a/DungeonShooting_Godot/prefab/weapon/Knife.tscn
+++ b/DungeonShooting_Godot/prefab/weapon/Knife.tscn
@@ -1,8 +1,8 @@
[gd_scene load_steps=8 format=3]
-[ext_resource type="PackedScene" uid="uid://bcosbsgt7a7o3" path="res://prefab/weapon/Weapon.tscn" id="1_xk7sg"]
+[ext_resource type="PackedScene" uid="uid://cxltmhhp4rbyk" path="res://prefab/weapon/WeaponTemplate.tscn" id="1_xk7sg"]
[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_vwwhv"]
-[ext_resource type="Texture2D" uid="uid://bxhbsq0wb2yo1" path="res://resource/sprite/gun/knife1.png" id="3_s52oh"]
+[ext_resource type="Texture2D" uid="uid://bxhbsq0wb2yo1" path="res://resource/sprite/weapon/knife1.png" id="3_s52oh"]
[ext_resource type="PackedScene" path="res://prefab/FanCollisionShape.tscn" id="3_wdje6"]
diff --git a/DungeonShooting_Godot/prefab/weapon/Weapon.tscn b/DungeonShooting_Godot/prefab/weapon/Weapon.tscn
deleted file mode 100644
index c659747..0000000
--- a/DungeonShooting_Godot/prefab/weapon/Weapon.tscn
+++ /dev/null
@@ -1,82 +0,0 @@
-[gd_scene load_steps=9 format=3 uid="uid://cxltmhhp4rbyk"]
-
-[ext_resource type="Script" path="res://src/framework/activity/ActivityObjectTemplate.cs" id="1_76n4k"]
-[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_qy88l"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_cbiyh"]
-resource_local_to_scene = true
-shader = ExtResource("2_qy88l")
-shader_parameter/blend = Color(0, 0, 0, 0.470588)
-shader_parameter/schedule = 1
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_o36tv"]
-resource_local_to_scene = true
-shader = ExtResource("2_qy88l")
-shader_parameter/blend = Color(1, 1, 1, 1)
-shader_parameter/schedule = 0
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_3p5jk"]
-size = Vector2(19.5, 8.75)
-
-[sub_resource type="Animation" id="Animation_x136i"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("AnimatedSprite:material:shader_parameter/schedule")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0]
-}
-
-[sub_resource type="Animation" id="Animation_3piau"]
-resource_name = "floodlight"
-length = 3.0
-loop_mode = 1
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("AnimatedSprite:material:shader_parameter/schedule")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 2.3, 2.6, 2.7, 3),
-"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
-"update": 0,
-"values": [0, 0, 0.5, 0.5, 0]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_trkjd"]
-_data = {
-"RESET": SubResource("Animation_x136i"),
-"floodlight": SubResource("Animation_3piau")
-}
-
-[node name="Weapon" type="Node"]
-script = ExtResource("1_76n4k")
-collision_layer = 4
-
-[node name="ShadowSprite" type="Sprite2D" parent="."]
-z_index = -1
-material = SubResource("ShaderMaterial_cbiyh")
-
-[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
-material = SubResource("ShaderMaterial_o36tv")
-
-[node name="ShellPoint" type="Marker2D" parent="."]
-position = Vector2(0, -2)
-
-[node name="FirePoint" type="Marker2D" parent="."]
-position = Vector2(10, -2)
-
-[node name="Collision" type="CollisionShape2D" parent="."]
-shape = SubResource("RectangleShape2D_3p5jk")
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-"": SubResource("AnimationLibrary_trkjd")
-}
diff --git a/DungeonShooting_Godot/prefab/weapon/Weapon0001.tscn b/DungeonShooting_Godot/prefab/weapon/Weapon0001.tscn
index 0add557..6fd7f8c 100644
--- a/DungeonShooting_Godot/prefab/weapon/Weapon0001.tscn
+++ b/DungeonShooting_Godot/prefab/weapon/Weapon0001.tscn
@@ -1,64 +1,24 @@
-[gd_scene load_steps=9 format=3 uid="uid://byy386hv6bko0"]
+[gd_scene load_steps=7 format=3 uid="uid://c6etppq4v63xw"]
-[ext_resource type="Script" path="res://src/game/item/weapon/gun/Gun.cs" id="1_0ildu"]
-[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_yhdim"]
+[ext_resource type="PackedScene" uid="uid://cxltmhhp4rbyk" path="res://prefab/weapon/WeaponTemplate.tscn" id="1_0nysf"]
+[ext_resource type="Script" path="res://src/game/item/weapon/gun/Gun.cs" id="2_bd6qw"]
+[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="3_ksckd"]
+[ext_resource type="SpriteFrames" uid="uid://5m0qs7m4er5u" path="res://resource/spriteFrames/Weapon0001.tres" id="4_xo84l"]
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_cbiyh"]
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_5bfqf"]
resource_local_to_scene = true
-shader = ExtResource("2_yhdim")
+shader = ExtResource("3_ksckd")
shader_parameter/blend = Color(0, 0, 0, 0.470588)
shader_parameter/schedule = 1
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_o36tv"]
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_bj7y3"]
resource_local_to_scene = true
-shader = ExtResource("2_yhdim")
+shader = ExtResource("3_ksckd")
shader_parameter/blend = Color(1, 1, 1, 1)
shader_parameter/schedule = 0
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_3p5jk"]
-size = Vector2(19.5, 8.75)
-
-[sub_resource type="Animation" id="Animation_x136i"]
-length = 0.001
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("AnimatedSprite:material:shader_parameter/schedule")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0),
-"transitions": PackedFloat32Array(1),
-"update": 0,
-"values": [0]
-}
-
-[sub_resource type="Animation" id="Animation_3piau"]
-resource_name = "floodlight"
-length = 3.0
-loop_mode = 1
-tracks/0/type = "value"
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/path = NodePath("AnimatedSprite:material:shader_parameter/schedule")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/keys = {
-"times": PackedFloat32Array(0, 2.3, 2.6, 2.7, 3),
-"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
-"update": 0,
-"values": [0, 0, 0.5, 0.5, 0]
-}
-
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_trkjd"]
-_data = {
-"RESET": SubResource("Animation_x136i"),
-"floodlight": SubResource("Animation_3piau")
-}
-
-[node name="Weapon0001" type="CharacterBody2D" node_paths=PackedStringArray("FirePoint", "ShellPoint", "AnimationPlayer", "ShadowSprite", "AnimatedSprite", "Collision")]
-collision_layer = 4
-script = ExtResource("1_0ildu")
+[node name="Weapon0001" node_paths=PackedStringArray("FirePoint", "ShellPoint", "AnimationPlayer", "ShadowSprite", "AnimatedSprite", "Collision") instance=ExtResource("1_0nysf")]
+script = ExtResource("2_bd6qw")
FirePoint = NodePath("FirePoint")
ShellPoint = NodePath("ShellPoint")
AnimationPlayer = NodePath("AnimationPlayer")
@@ -66,23 +26,19 @@
AnimatedSprite = NodePath("AnimatedSprite")
Collision = NodePath("Collision")
-[node name="ShadowSprite" type="Sprite2D" parent="."]
-z_index = -1
-material = SubResource("ShaderMaterial_cbiyh")
+[node name="ShadowSprite" parent="." index="0"]
+material = SubResource("ShaderMaterial_5bfqf")
-[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
-material = SubResource("ShaderMaterial_o36tv")
+[node name="AnimatedSprite" parent="." index="1"]
+material = SubResource("ShaderMaterial_bj7y3")
+position = Vector2(4, 1)
+sprite_frames = ExtResource("4_xo84l")
-[node name="ShellPoint" type="Marker2D" parent="."]
-position = Vector2(0, -2)
+[node name="ShellPoint" parent="." index="2"]
+position = Vector2(5.5, -2.5)
-[node name="FirePoint" type="Marker2D" parent="."]
-position = Vector2(10, -2)
+[node name="FirePoint" parent="." index="3"]
+position = Vector2(18, -1)
-[node name="Collision" type="CollisionShape2D" parent="."]
-shape = SubResource("RectangleShape2D_3p5jk")
-
-[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-libraries = {
-"": SubResource("AnimationLibrary_trkjd")
-}
+[node name="Collision" parent="." index="4"]
+position = Vector2(4, 0)
diff --git a/DungeonShooting_Godot/prefab/weapon/WeaponPreview.tscn b/DungeonShooting_Godot/prefab/weapon/WeaponPreview.tscn
deleted file mode 100644
index db28219..0000000
--- a/DungeonShooting_Godot/prefab/weapon/WeaponPreview.tscn
+++ /dev/null
@@ -1,33 +0,0 @@
-[gd_scene load_steps=6 format=3 uid="uid://csd4sk65m46qh"]
-
-[ext_resource type="PackedScene" uid="uid://byy386hv6bko0" path="res://prefab/weapon/Weapon0001.tscn" id="1_m6dhx"]
-[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_3enxv"]
-[ext_resource type="SpriteFrames" uid="uid://djdvlmqsn8bie" path="res://resource/spriteFrames/Weapon0005.tres" id="3_rmwmt"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_ki13x"]
-resource_local_to_scene = true
-shader = ExtResource("2_3enxv")
-shader_parameter/blend = Color(0, 0, 0, 0.470588)
-shader_parameter/schedule = 1
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_5ojsm"]
-resource_local_to_scene = true
-shader = ExtResource("2_3enxv")
-shader_parameter/blend = Color(1, 1, 1, 1)
-shader_parameter/schedule = 0
-
-[node name="WeaponPreview" instance=ExtResource("1_m6dhx")]
-
-[node name="ShadowSprite" parent="." index="0"]
-material = SubResource("ShaderMaterial_ki13x")
-
-[node name="AnimatedSprite" parent="." index="1"]
-material = SubResource("ShaderMaterial_5ojsm")
-position = Vector2(9, 0)
-sprite_frames = ExtResource("3_rmwmt")
-
-[node name="ShellPoint" parent="." index="2"]
-position = Vector2(7, -3.5)
-
-[node name="FirePoint" parent="." index="3"]
-position = Vector2(28, -3.5)
diff --git a/DungeonShooting_Godot/prefab/weapon/WeaponTemplate.tscn b/DungeonShooting_Godot/prefab/weapon/WeaponTemplate.tscn
new file mode 100644
index 0000000..0f34e3a
--- /dev/null
+++ b/DungeonShooting_Godot/prefab/weapon/WeaponTemplate.tscn
@@ -0,0 +1,80 @@
+[gd_scene load_steps=8 format=3 uid="uid://cxltmhhp4rbyk"]
+
+[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="1_xa8r2"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_cbiyh"]
+resource_local_to_scene = true
+shader = ExtResource("1_xa8r2")
+shader_parameter/blend = Color(0, 0, 0, 0.470588)
+shader_parameter/schedule = 1
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_o36tv"]
+resource_local_to_scene = true
+shader = ExtResource("1_xa8r2")
+shader_parameter/blend = Color(1, 1, 1, 1)
+shader_parameter/schedule = 0
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_3p5jk"]
+size = Vector2(19.5, 8.75)
+
+[sub_resource type="Animation" id="Animation_x136i"]
+length = 0.001
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("AnimatedSprite:material:shader_parameter/schedule")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 0,
+"values": [0]
+}
+
+[sub_resource type="Animation" id="Animation_3piau"]
+resource_name = "floodlight"
+length = 3.0
+loop_mode = 1
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("AnimatedSprite:material:shader_parameter/schedule")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 2.3, 2.6, 2.7, 3),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
+"update": 0,
+"values": [0, 0, 0.5, 0.5, 0]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_trkjd"]
+_data = {
+"RESET": SubResource("Animation_x136i"),
+"floodlight": SubResource("Animation_3piau")
+}
+
+[node name="WeaponTemplate" type="CharacterBody2D"]
+collision_layer = 4
+
+[node name="ShadowSprite" type="Sprite2D" parent="."]
+z_index = -1
+material = SubResource("ShaderMaterial_cbiyh")
+
+[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
+material = SubResource("ShaderMaterial_o36tv")
+
+[node name="ShellPoint" type="Marker2D" parent="."]
+position = Vector2(0, -2)
+
+[node name="FirePoint" type="Marker2D" parent="."]
+position = Vector2(10, -2)
+
+[node name="Collision" type="CollisionShape2D" parent="."]
+shape = SubResource("RectangleShape2D_3p5jk")
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+libraries = {
+"": SubResource("AnimationLibrary_trkjd")
+}
diff --git a/DungeonShooting_Godot/prefab/weapon/bullet/Bullet0001.tscn b/DungeonShooting_Godot/prefab/weapon/bullet/Bullet0001.tscn
deleted file mode 100644
index 8c2a3c7..0000000
--- a/DungeonShooting_Godot/prefab/weapon/bullet/Bullet0001.tscn
+++ /dev/null
@@ -1,66 +0,0 @@
-[gd_scene load_steps=9 format=3 uid="uid://bj4kmvt8jg1cf"]
-
-[ext_resource type="Script" path="res://src/game/item/bullet/Bullet.cs" id="1_82ma0"]
-[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_p12d3"]
-[ext_resource type="Texture2D" uid="uid://bu0b11hiuecxy" path="res://resource/sprite/bullet/bullet.png" id="3_hjgpe"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_5a4f2"]
-resource_local_to_scene = true
-shader = ExtResource("2_p12d3")
-shader_parameter/blend = Color(0, 0, 0, 0.470588)
-shader_parameter/schedule = 1
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_o0655"]
-resource_local_to_scene = true
-shader = ExtResource("2_p12d3")
-shader_parameter/blend = Color(1, 1, 1, 1)
-shader_parameter/schedule = 0
-
-[sub_resource type="SpriteFrames" id="SpriteFrames_5wvmf"]
-animations = [{
-"frames": [{
-"duration": 1.0,
-"texture": ExtResource("3_hjgpe")
-}],
-"loop": true,
-"name": &"default",
-"speed": 5.0
-}]
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_c0onq"]
-size = Vector2(44.72, 12)
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_lcqb8"]
-size = Vector2(11, 4)
-
-[node name="Bullet0001" type="CharacterBody2D" node_paths=PackedStringArray("CollisionArea", "ShadowSprite", "AnimatedSprite", "Collision")]
-collision_layer = 2
-script = ExtResource("1_82ma0")
-CollisionArea = NodePath("CollisionArea")
-ShadowSprite = NodePath("ShadowSprite")
-AnimatedSprite = NodePath("AnimatedSprite")
-Collision = NodePath("Collision")
-
-[node name="ShadowSprite" type="Sprite2D" parent="."]
-z_index = -1
-material = SubResource("ShaderMaterial_5a4f2")
-
-[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
-modulate = Color(1.8, 1.8, 1.8, 1)
-material = SubResource("ShaderMaterial_o0655")
-sprite_frames = SubResource("SpriteFrames_5wvmf")
-
-[node name="CollisionArea" type="Area2D" parent="."]
-visible = false
-collision_layer = 0
-collision_mask = 0
-monitorable = false
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CollisionArea"]
-position = Vector2(2.93353, 0)
-scale = Vector2(0.226586, 0.333333)
-shape = SubResource("RectangleShape2D_c0onq")
-
-[node name="Collision" type="CollisionShape2D" parent="."]
-position = Vector2(2.5, 0)
-shape = SubResource("RectangleShape2D_lcqb8")
diff --git a/DungeonShooting_Godot/prefab/weapon/bullet/Bullet0002.tscn b/DungeonShooting_Godot/prefab/weapon/bullet/Bullet0002.tscn
deleted file mode 100644
index f951e9f..0000000
--- a/DungeonShooting_Godot/prefab/weapon/bullet/Bullet0002.tscn
+++ /dev/null
@@ -1,65 +0,0 @@
-[gd_scene load_steps=9 format=3 uid="uid://bqkj0rn72ppge"]
-
-[ext_resource type="Script" path="res://src/game/item/bullet/Bullet.cs" id="1_wphe7"]
-[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_l3yjy"]
-[ext_resource type="Texture2D" uid="uid://ctsvj4y1t538u" path="res://resource/sprite/bullet/bullet3.png" id="3_nf7ic"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_5a4f2"]
-resource_local_to_scene = true
-shader = ExtResource("2_l3yjy")
-shader_parameter/blend = Color(0, 0, 0, 0.470588)
-shader_parameter/schedule = 1
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_o0655"]
-resource_local_to_scene = true
-shader = ExtResource("2_l3yjy")
-shader_parameter/blend = Color(1, 1, 1, 1)
-shader_parameter/schedule = 0
-
-[sub_resource type="SpriteFrames" id="SpriteFrames_5wvmf"]
-animations = [{
-"frames": [{
-"duration": 1.0,
-"texture": ExtResource("3_nf7ic")
-}],
-"loop": true,
-"name": &"default",
-"speed": 5.0
-}]
-
-[sub_resource type="RectangleShape2D" id="RectangleShape2D_c0onq"]
-size = Vector2(44.72, 12)
-
-[sub_resource type="CircleShape2D" id="CircleShape2D_e2yn3"]
-radius = 3.0
-
-[node name="Bullet0002" type="CharacterBody2D" node_paths=PackedStringArray("CollisionArea", "ShadowSprite", "AnimatedSprite", "Collision")]
-collision_layer = 2
-script = ExtResource("1_wphe7")
-CollisionArea = NodePath("CollisionArea")
-ShadowSprite = NodePath("ShadowSprite")
-AnimatedSprite = NodePath("AnimatedSprite")
-Collision = NodePath("Collision")
-
-[node name="ShadowSprite" type="Sprite2D" parent="."]
-z_index = -1
-material = SubResource("ShaderMaterial_5a4f2")
-
-[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
-modulate = Color(1.8, 1.8, 1.8, 1)
-material = SubResource("ShaderMaterial_o0655")
-sprite_frames = SubResource("SpriteFrames_5wvmf")
-
-[node name="CollisionArea" type="Area2D" parent="."]
-visible = false
-collision_layer = 0
-collision_mask = 0
-monitorable = false
-
-[node name="CollisionShape2D" type="CollisionShape2D" parent="CollisionArea"]
-position = Vector2(2.93353, 0)
-scale = Vector2(0.226586, 0.333333)
-shape = SubResource("RectangleShape2D_c0onq")
-
-[node name="Collision" type="CollisionShape2D" parent="."]
-shape = SubResource("CircleShape2D_e2yn3")
diff --git a/DungeonShooting_Godot/prefab/weapon/shell/Shell0001.tscn b/DungeonShooting_Godot/prefab/weapon/shell/Shell0001.tscn
deleted file mode 100644
index b11de73..0000000
--- a/DungeonShooting_Godot/prefab/weapon/shell/Shell0001.tscn
+++ /dev/null
@@ -1,44 +0,0 @@
-[gd_scene load_steps=7 format=3 uid="uid://bj4yr6ru8nhwr"]
-
-[ext_resource type="Script" path="res://src/game/item/shell/Shell.cs" id="1_ph0ad"]
-[ext_resource type="Shader" path="res://resource/material/Blend.gdshader" id="2_k705i"]
-[ext_resource type="Texture2D" uid="uid://dto03bc2qbhnj" path="res://resource/sprite/shell/shellCase.png" id="3_0fth1"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_px12l"]
-resource_local_to_scene = true
-shader = ExtResource("2_k705i")
-shader_parameter/blend = Color(0, 0, 0, 0.470588)
-shader_parameter/schedule = 1
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_7e6fo"]
-resource_local_to_scene = true
-shader = ExtResource("2_k705i")
-shader_parameter/blend = Color(1, 1, 1, 1)
-shader_parameter/schedule = 0
-
-[sub_resource type="SpriteFrames" id="SpriteFrames_4huvy"]
-animations = [{
-"frames": [{
-"duration": 1.0,
-"texture": ExtResource("3_0fth1")
-}],
-"loop": true,
-"name": &"default",
-"speed": 5.0
-}]
-
-[node name="Shell0001" type="CharacterBody2D" node_paths=PackedStringArray("ShadowSprite", "AnimatedSprite", "Collision")]
-script = ExtResource("1_ph0ad")
-ShadowSprite = NodePath("ShadowSprite")
-AnimatedSprite = NodePath("AnimatedSprite")
-Collision = NodePath("Collision")
-
-[node name="ShadowSprite" type="Sprite2D" parent="."]
-z_index = -1
-material = SubResource("ShaderMaterial_px12l")
-
-[node name="AnimatedSprite" type="AnimatedSprite2D" parent="."]
-material = SubResource("ShaderMaterial_7e6fo")
-sprite_frames = SubResource("SpriteFrames_4huvy")
-
-[node name="Collision" type="CollisionShape2D" parent="."]
diff --git a/DungeonShooting_Godot/resource/config/ActivityObject.json b/DungeonShooting_Godot/resource/config/ActivityObject.json
index 230ffe4..616a7fc 100644
--- a/DungeonShooting_Godot/resource/config/ActivityObject.json
+++ b/DungeonShooting_Godot/resource/config/ActivityObject.json
@@ -2,46 +2,55 @@
{
"Id": "role0001",
"Type": 3,
- "Prefab": "res://prefab/role/Player.tscn"
+ "Prefab": "res://prefab/role/Role0001.tscn",
+ "Remark": "\u73A9\u5BB6"
},
{
"Id": "weapon0001",
"Type": 5,
- "Prefab": "res://prefab/weapon/Weapon0001.tscn"
+ "Prefab": "res://prefab/weapon/Weapon0001.tscn",
+ "Remark": ""
},
{
"Id": "bullet0001",
"Type": 6,
- "Prefab": "res://prefab/weapon/bullet/Bullet0001.tscn"
+ "Prefab": "res://prefab/bullet/Bullet0001.tscn",
+ "Remark": ""
},
{
"Id": "bullet0002",
"Type": 6,
- "Prefab": "res://prefab/weapon/bullet/Bullet0002.tscn"
+ "Prefab": "res://prefab/bullet/Bullet0001.tscn",
+ "Remark": ""
},
{
"Id": "shell0001",
"Type": 7,
- "Prefab": "res://prefab/weapon/shell/Shell0001.tscn"
+ "Prefab": "res://prefab/shell/Shell0001.tscn",
+ "Remark": ""
},
{
"Id": "other_door_e",
"Type": 9,
- "Prefab": "res://prefab/map/RoomDoor_E.tscn"
+ "Prefab": "res://prefab/map/RoomDoor_E.tscn",
+ "Remark": "\u5730\u7262\u623F\u95F4\u7684\u95E8(\u4E1C\u4FA7)"
},
{
"Id": "other_door_w",
"Type": 9,
- "Prefab": "res://prefab/map/RoomDoor_W.tscn"
+ "Prefab": "res://prefab/map/RoomDoor_W.tscn",
+ "Remark": "\u5730\u7262\u623F\u95F4\u7684\u95E8(\u897F\u4FA7)"
},
{
"Id": "other_door_s",
"Type": 9,
- "Prefab": "res://prefab/map/RoomDoor_S.tscn"
+ "Prefab": "res://prefab/map/RoomDoor_S.tscn",
+ "Remark": "\u5730\u7262\u623F\u95F4\u7684\u95E8(\u5357\u4FA7)"
},
{
"Id": "other_door_n",
"Type": 9,
- "Prefab": "res://prefab/map/RoomDoor_N.tscn"
+ "Prefab": "res://prefab/map/RoomDoor_N.tscn",
+ "Remark": "\u5730\u7262\u623F\u95F4\u7684\u95E8(\u5317\u4FA7)"
}
]
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/config/Weapon.json b/DungeonShooting_Godot/resource/config/Weapon.json
index 5b93e65..0c4063f 100644
--- a/DungeonShooting_Godot/resource/config/Weapon.json
+++ b/DungeonShooting_Godot/resource/config/Weapon.json
@@ -1,45 +1,102 @@
[
{
"Id": "0001",
- "Prefab": "",
- "Weight": 0,
- "Name": "",
- "Icon": "",
- "WeightType": 0,
- "ContinuousShoot": false,
- "AmmoCapacity": 0,
- "MaxAmmoCapacity": 0,
- "StandbyAmmoCapacity": 0,
- "ReloadTime": 0,
+ "WeaponId": "weapon0001",
+ "Name": "\u6B65\u67AA",
+ "Icon": "res://resource/sprite/gun/gun4.png",
+ "Weight": 40,
+ "WeightType": 2,
+ "ContinuousShoot": true,
+ "AmmoCapacity": 30,
+ "MaxAmmoCapacity": 90,
+ "StandbyAmmoCapacity": 30,
+ "ReloadTime": 2.5,
"AloneReload": false,
"AloneReloadCount": 0,
"AloneReloadCanShoot": false,
"LooseShoot": false,
"MinChargeTime": 0,
- "MinContinuousCount": 0,
- "MaxContinuousCount": 0,
+ "MinContinuousCount": 1,
+ "MaxContinuousCount": 1,
"TriggerInterval": 0,
- "StartFiringSpeed": 0,
- "FinalFiringSpeed": 0,
+ "StartFiringSpeed": 480,
+ "FinalFiringSpeed": 480,
"FiringSpeedAddSpeed": 0,
"FiringSpeedBackSpeed": 0,
- "MinFireBulletCount": 0,
- "MaxFireBulletCount": 0,
+ "MinFireBulletCount": 1,
+ "MaxFireBulletCount": 1,
"DelayedTime": 0,
- "StartScatteringRange": 0,
- "FinalScatteringRange": 0,
- "ScatteringRangeAddValue": 0,
- "ScatteringRangeBackSpeed": 0,
- "ScatteringRangeBackTime": 0,
- "MaxDistance": 0,
- "MinDistance": 0,
- "MaxBacklash": 0,
- "MinBacklash": 0,
- "BacklashRegressionSpeed": 0,
- "UpliftAngle": 0,
+ "StartScatteringRange": 30,
+ "FinalScatteringRange": 90,
+ "ScatteringRangeAddValue": 2,
+ "ScatteringRangeBackSpeed": 40,
+ "ScatteringRangeBackTime": 0.5,
+ "MinDistance": 300,
+ "MaxDistance": 400,
+ "MinBacklash": 2,
+ "MaxBacklash": 4,
+ "BacklashRegressionSpeed": 35,
+ "UpliftAngle": 10,
"DefaultAngle": 0,
- "UpliftAngleRestore": 0,
- "BulletId": "",
- "ThrowCollisionSize": null
+ "UpliftAngleRestore": 1,
+ "BulletId": "bullet0001",
+ "ThrowCollisionSize": {
+ "X": 20,
+ "Y": 15
+ },
+ "AiUseAttributeId": "0002",
+ "AiTargetLockingTime": 0,
+ "AiBulletSpeedScale": 0,
+ "AiAmmoConsumptionProbability": 0
+ },
+ {
+ "Id": "0002",
+ "WeaponId": "",
+ "Name": "\u6B65\u67AA",
+ "Icon": "res://resource/sprite/gun/gun4.png",
+ "Weight": 40,
+ "WeightType": 2,
+ "ContinuousShoot": false,
+ "AmmoCapacity": 30,
+ "MaxAmmoCapacity": 90,
+ "StandbyAmmoCapacity": 30,
+ "ReloadTime": 2.5,
+ "AloneReload": false,
+ "AloneReloadCount": 0,
+ "AloneReloadCanShoot": false,
+ "LooseShoot": false,
+ "MinChargeTime": 0,
+ "MinContinuousCount": 3,
+ "MaxContinuousCount": 3,
+ "TriggerInterval": 3,
+ "StartFiringSpeed": 480,
+ "FinalFiringSpeed": 480,
+ "FiringSpeedAddSpeed": 0,
+ "FiringSpeedBackSpeed": 0,
+ "MinFireBulletCount": 1,
+ "MaxFireBulletCount": 1,
+ "DelayedTime": 0,
+ "StartScatteringRange": 30,
+ "FinalScatteringRange": 90,
+ "ScatteringRangeAddValue": 2,
+ "ScatteringRangeBackSpeed": 40,
+ "ScatteringRangeBackTime": 0.5,
+ "MinDistance": 300,
+ "MaxDistance": 400,
+ "MinBacklash": 2,
+ "MaxBacklash": 4,
+ "BacklashRegressionSpeed": 35,
+ "UpliftAngle": 10,
+ "DefaultAngle": 0,
+ "UpliftAngleRestore": 1,
+ "BulletId": "bullet0001",
+ "ThrowCollisionSize": {
+ "X": 20,
+ "Y": 15
+ },
+ "AiUseAttributeId": "",
+ "AiTargetLockingTime": 0.5,
+ "AiBulletSpeedScale": 0.7,
+ "AiAmmoConsumptionProbability": 0
}
]
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/sprite/gun/bow.png b/DungeonShooting_Godot/resource/sprite/gun/bow.png
deleted file mode 100644
index 0654ef2..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/bow.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/gun/bow.png.import b/DungeonShooting_Godot/resource/sprite/gun/bow.png.import
deleted file mode 100644
index aad1840..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/bow.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://b4exgoa8t0wny"
-path="res://.godot/imported/bow.png-bf9e685f71e0011b6ec8dc0a31121391.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/gun/bow.png"
-dest_files=["res://.godot/imported/bow.png-bf9e685f71e0011b6ec8dc0a31121391.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/gun/gun1.png b/DungeonShooting_Godot/resource/sprite/gun/gun1.png
deleted file mode 100644
index fc6c2ce..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/gun1.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun1.png.import b/DungeonShooting_Godot/resource/sprite/gun/gun1.png.import
deleted file mode 100644
index afc58bd..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/gun1.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://yn8t7ovmt4gj"
-path="res://.godot/imported/gun1.png-f7bc3e27b4b477d47c7353ffb91687ea.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/gun/gun1.png"
-dest_files=["res://.godot/imported/gun1.png-f7bc3e27b4b477d47c7353ffb91687ea.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/gun/gun2.png b/DungeonShooting_Godot/resource/sprite/gun/gun2.png
deleted file mode 100644
index 4e0b9e6..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/gun2.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun2.png.import b/DungeonShooting_Godot/resource/sprite/gun/gun2.png.import
deleted file mode 100644
index e80698b..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/gun2.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://5geiuvv6hyov"
-path="res://.godot/imported/gun2.png-67d4f6125e770591468ba3ab236736ef.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/gun/gun2.png"
-dest_files=["res://.godot/imported/gun2.png-67d4f6125e770591468ba3ab236736ef.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/gun/gun3.png b/DungeonShooting_Godot/resource/sprite/gun/gun3.png
deleted file mode 100644
index 4f5aff6..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/gun3.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun3.png.import b/DungeonShooting_Godot/resource/sprite/gun/gun3.png.import
deleted file mode 100644
index 623f764..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/gun3.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://c1tnh6laf172u"
-path="res://.godot/imported/gun3.png-f2b98956d7fdf008b4a87a7be920ea12.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/gun/gun3.png"
-dest_files=["res://.godot/imported/gun3.png-f2b98956d7fdf008b4a87a7be920ea12.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/gun/gun4.png b/DungeonShooting_Godot/resource/sprite/gun/gun4.png
deleted file mode 100644
index c6b4b23..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/gun4.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun4.png.import b/DungeonShooting_Godot/resource/sprite/gun/gun4.png.import
deleted file mode 100644
index 1cee318..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/gun4.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://xafbhgrxmosy"
-path="res://.godot/imported/gun4.png-ba6b1c54aee277c1e95a427dbdaaddeb.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/gun/gun4.png"
-dest_files=["res://.godot/imported/gun4.png-ba6b1c54aee277c1e95a427dbdaaddeb.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/gun/gun5.png b/DungeonShooting_Godot/resource/sprite/gun/gun5.png
deleted file mode 100644
index 9845085..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/gun5.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun5.png.import b/DungeonShooting_Godot/resource/sprite/gun/gun5.png.import
deleted file mode 100644
index 5b7b1bd..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/gun5.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://c2eber1v7nb4j"
-path="res://.godot/imported/gun5.png-6f355c0cd6234d52c0b85a3bec0a414e.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/gun/gun5.png"
-dest_files=["res://.godot/imported/gun5.png-6f355c0cd6234d52c0b85a3bec0a414e.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/gun/gun6.png b/DungeonShooting_Godot/resource/sprite/gun/gun6.png
deleted file mode 100644
index b4948f3..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/gun6.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun6.png.import b/DungeonShooting_Godot/resource/sprite/gun/gun6.png.import
deleted file mode 100644
index 8e5fc99..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/gun6.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://rlp8f2rgxlbf"
-path="res://.godot/imported/gun6.png-0667c2b2b24159daf259f9cc3faa9fee.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/gun/gun6.png"
-dest_files=["res://.godot/imported/gun6.png-0667c2b2b24159daf259f9cc3faa9fee.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/gun/gun7.png b/DungeonShooting_Godot/resource/sprite/gun/gun7.png
deleted file mode 100644
index a4d1cea..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/gun7.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun7.png.import b/DungeonShooting_Godot/resource/sprite/gun/gun7.png.import
deleted file mode 100644
index fd99067..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/gun7.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bs6ukbtcmxuiw"
-path="res://.godot/imported/gun7.png-c5124593247a40157a5388c936276859.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/gun/gun7.png"
-dest_files=["res://.godot/imported/gun7.png-c5124593247a40157a5388c936276859.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/gun/gun8.png b/DungeonShooting_Godot/resource/sprite/gun/gun8.png
deleted file mode 100644
index 6186597..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/gun8.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/gun/gun8.png.import b/DungeonShooting_Godot/resource/sprite/gun/gun8.png.import
deleted file mode 100644
index d601047..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/gun8.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://2lcc20olyi5d"
-path="res://.godot/imported/gun8.png-ce26b9cb6654714a9891481124571c4f.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/gun/gun8.png"
-dest_files=["res://.godot/imported/gun8.png-ce26b9cb6654714a9891481124571c4f.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/gun/knife1.png b/DungeonShooting_Godot/resource/sprite/gun/knife1.png
deleted file mode 100644
index a75464a..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/knife1.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/gun/knife1.png.import b/DungeonShooting_Godot/resource/sprite/gun/knife1.png.import
deleted file mode 100644
index 91b8af9..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/knife1.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bxhbsq0wb2yo1"
-path="res://.godot/imported/knife1.png-dd5849c94377d47ed0b17223d5f25d6a.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/gun/knife1.png"
-dest_files=["res://.godot/imported/knife1.png-dd5849c94377d47ed0b17223d5f25d6a.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/gun/weapon0001/weapon0001.png b/DungeonShooting_Godot/resource/sprite/gun/weapon0001/weapon0001.png
deleted file mode 100644
index a8d9384..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/weapon0001/weapon0001.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/gun/weapon0001/weapon0001.png.import b/DungeonShooting_Godot/resource/sprite/gun/weapon0001/weapon0001.png.import
deleted file mode 100644
index b4c2034..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/weapon0001/weapon0001.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://civvcowt2wklr"
-path="res://.godot/imported/weapon0001.png-6f3807222cc10bbb7eddc649cd3775c0.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/gun/weapon0001/weapon0001.png"
-dest_files=["res://.godot/imported/weapon0001.png-6f3807222cc10bbb7eddc649cd3775c0.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/gun/weapon0002/Weapon0002.png b/DungeonShooting_Godot/resource/sprite/gun/weapon0002/Weapon0002.png
deleted file mode 100644
index 69e6b4d..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/weapon0002/Weapon0002.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/gun/weapon0002/Weapon0002.png.import b/DungeonShooting_Godot/resource/sprite/gun/weapon0002/Weapon0002.png.import
deleted file mode 100644
index e376a05..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/weapon0002/Weapon0002.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://b53kofmyan42g"
-path="res://.godot/imported/Weapon0002.png-edc4a18e854dc72621124f2cadb58fe1.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/gun/weapon0002/Weapon0002.png"
-dest_files=["res://.godot/imported/Weapon0002.png-edc4a18e854dc72621124f2cadb58fe1.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/gun/weapon0003/Weapon0003.png b/DungeonShooting_Godot/resource/sprite/gun/weapon0003/Weapon0003.png
deleted file mode 100644
index 3c0c458..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/weapon0003/Weapon0003.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/gun/weapon0003/Weapon0003.png.import b/DungeonShooting_Godot/resource/sprite/gun/weapon0003/Weapon0003.png.import
deleted file mode 100644
index e25d0cd..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/weapon0003/Weapon0003.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://clgf63extg800"
-path="res://.godot/imported/Weapon0003.png-13ab586687326f977a86147c1dcff66d.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/gun/weapon0003/Weapon0003.png"
-dest_files=["res://.godot/imported/Weapon0003.png-13ab586687326f977a86147c1dcff66d.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/gun/weapon0005/Weapon0005.png b/DungeonShooting_Godot/resource/sprite/gun/weapon0005/Weapon0005.png
deleted file mode 100644
index dd42c8a..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/weapon0005/Weapon0005.png
+++ /dev/null
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/gun/weapon0005/Weapon0005.png.import b/DungeonShooting_Godot/resource/sprite/gun/weapon0005/Weapon0005.png.import
deleted file mode 100644
index c13fd73..0000000
--- a/DungeonShooting_Godot/resource/sprite/gun/weapon0005/Weapon0005.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://504f1r0mi33n"
-path="res://.godot/imported/Weapon0005.png-25ad70af49e1b183ff828b73e385fbe0.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://resource/sprite/gun/weapon0005/Weapon0005.png"
-dest_files=["res://.godot/imported/Weapon0005.png-25ad70af49e1b183ff828b73e385fbe0.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0001/enemy0001.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy0001/enemy0001.png.import
index b20c9a6..c36be94 100644
--- a/DungeonShooting_Godot/resource/sprite/role/enemy0001/enemy0001.png.import
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0001/enemy0001.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://chd2vtesap5cf"
-path="res://.godot/imported/enemy0001.png-1247a3ddf8a1a163d812cad12c4340fd.ctex"
+path="res://.godot/imported/Enemy0001.png-148a38dfa95953b26d890356e8875de4.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://resource/sprite/role/enemy0001/enemy0001.png"
-dest_files=["res://.godot/imported/enemy0001.png-1247a3ddf8a1a163d812cad12c4340fd.ctex"]
+source_file="res://resource/sprite/role/enemy0001/Enemy0001.png"
+dest_files=["res://.godot/imported/Enemy0001.png-148a38dfa95953b26d890356e8875de4.ctex"]
[params]
diff --git a/DungeonShooting_Godot/resource/sprite/role/enemy0001/enemy0001_Debris.png.import b/DungeonShooting_Godot/resource/sprite/role/enemy0001/enemy0001_Debris.png.import
index 56388a2..d563acf 100644
--- a/DungeonShooting_Godot/resource/sprite/role/enemy0001/enemy0001_Debris.png.import
+++ b/DungeonShooting_Godot/resource/sprite/role/enemy0001/enemy0001_Debris.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://d2f55lu60x64i"
-path="res://.godot/imported/enemy0001_Debris.png-297a2fb6680cb862a9a085cf58f8268c.ctex"
+path="res://.godot/imported/Enemy0001_Debris.png-ac416dc79cd3c1217b27e1ef1fbe0d0b.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://resource/sprite/role/enemy0001/enemy0001_Debris.png"
-dest_files=["res://.godot/imported/enemy0001_Debris.png-297a2fb6680cb862a9a085cf58f8268c.ctex"]
+source_file="res://resource/sprite/role/enemy0001/Enemy0001_Debris.png"
+dest_files=["res://.godot/imported/Enemy0001_Debris.png-ac416dc79cd3c1217b27e1ef1fbe0d0b.ctex"]
[params]
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/bow.png b/DungeonShooting_Godot/resource/sprite/weapon/bow.png
new file mode 100644
index 0000000..0654ef2
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/bow.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/bow.png.import b/DungeonShooting_Godot/resource/sprite/weapon/bow.png.import
new file mode 100644
index 0000000..412e93d
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/bow.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b4exgoa8t0wny"
+path="res://.godot/imported/bow.png-9ae685914082766e6dbcd1eaddb43b40.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/weapon/bow.png"
+dest_files=["res://.godot/imported/bow.png-9ae685914082766e6dbcd1eaddb43b40.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/weapon/gun1.png b/DungeonShooting_Godot/resource/sprite/weapon/gun1.png
new file mode 100644
index 0000000..fc6c2ce
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/gun1.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/gun1.png.import b/DungeonShooting_Godot/resource/sprite/weapon/gun1.png.import
new file mode 100644
index 0000000..9964bdc
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/gun1.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://yn8t7ovmt4gj"
+path="res://.godot/imported/gun1.png-87777518c2382cd35c967ee32bf367ad.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/weapon/gun1.png"
+dest_files=["res://.godot/imported/gun1.png-87777518c2382cd35c967ee32bf367ad.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/weapon/gun2.png b/DungeonShooting_Godot/resource/sprite/weapon/gun2.png
new file mode 100644
index 0000000..4e0b9e6
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/gun2.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/gun2.png.import b/DungeonShooting_Godot/resource/sprite/weapon/gun2.png.import
new file mode 100644
index 0000000..feb8eb6
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/gun2.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://5geiuvv6hyov"
+path="res://.godot/imported/gun2.png-78b331a2f245cfbe03b10da276435b64.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/weapon/gun2.png"
+dest_files=["res://.godot/imported/gun2.png-78b331a2f245cfbe03b10da276435b64.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/weapon/gun3.png b/DungeonShooting_Godot/resource/sprite/weapon/gun3.png
new file mode 100644
index 0000000..4f5aff6
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/gun3.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/gun3.png.import b/DungeonShooting_Godot/resource/sprite/weapon/gun3.png.import
new file mode 100644
index 0000000..e5154c0
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/gun3.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c1tnh6laf172u"
+path="res://.godot/imported/gun3.png-d2428e7c1819cfb8a78ef87505aee0a3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/weapon/gun3.png"
+dest_files=["res://.godot/imported/gun3.png-d2428e7c1819cfb8a78ef87505aee0a3.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/weapon/gun4.png b/DungeonShooting_Godot/resource/sprite/weapon/gun4.png
new file mode 100644
index 0000000..c6b4b23
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/gun4.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/gun4.png.import b/DungeonShooting_Godot/resource/sprite/weapon/gun4.png.import
new file mode 100644
index 0000000..316b26d
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/gun4.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://xafbhgrxmosy"
+path="res://.godot/imported/gun4.png-f47ef44de364483b033f38a2d031303c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/weapon/gun4.png"
+dest_files=["res://.godot/imported/gun4.png-f47ef44de364483b033f38a2d031303c.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/weapon/gun5.png b/DungeonShooting_Godot/resource/sprite/weapon/gun5.png
new file mode 100644
index 0000000..9845085
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/gun5.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/gun5.png.import b/DungeonShooting_Godot/resource/sprite/weapon/gun5.png.import
new file mode 100644
index 0000000..3e8d082
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/gun5.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c2eber1v7nb4j"
+path="res://.godot/imported/gun5.png-da05c9e18ddc46a7f72168cb9c25449c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/weapon/gun5.png"
+dest_files=["res://.godot/imported/gun5.png-da05c9e18ddc46a7f72168cb9c25449c.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/weapon/gun6.png b/DungeonShooting_Godot/resource/sprite/weapon/gun6.png
new file mode 100644
index 0000000..b4948f3
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/gun6.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/gun6.png.import b/DungeonShooting_Godot/resource/sprite/weapon/gun6.png.import
new file mode 100644
index 0000000..94f2abb
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/gun6.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://rlp8f2rgxlbf"
+path="res://.godot/imported/gun6.png-698dacce2603c9d452b55702363db8fc.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/weapon/gun6.png"
+dest_files=["res://.godot/imported/gun6.png-698dacce2603c9d452b55702363db8fc.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/weapon/gun7.png b/DungeonShooting_Godot/resource/sprite/weapon/gun7.png
new file mode 100644
index 0000000..a4d1cea
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/gun7.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/gun7.png.import b/DungeonShooting_Godot/resource/sprite/weapon/gun7.png.import
new file mode 100644
index 0000000..92fb78d
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/gun7.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bs6ukbtcmxuiw"
+path="res://.godot/imported/gun7.png-9068807109603150cd0529909f81d6c1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/weapon/gun7.png"
+dest_files=["res://.godot/imported/gun7.png-9068807109603150cd0529909f81d6c1.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/weapon/gun8.png b/DungeonShooting_Godot/resource/sprite/weapon/gun8.png
new file mode 100644
index 0000000..6186597
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/gun8.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/gun8.png.import b/DungeonShooting_Godot/resource/sprite/weapon/gun8.png.import
new file mode 100644
index 0000000..ac3d0d8
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/gun8.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://2lcc20olyi5d"
+path="res://.godot/imported/gun8.png-a936b61cfb3713c19173bfa954b35ecd.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/weapon/gun8.png"
+dest_files=["res://.godot/imported/gun8.png-a936b61cfb3713c19173bfa954b35ecd.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/weapon/knife1.png b/DungeonShooting_Godot/resource/sprite/weapon/knife1.png
new file mode 100644
index 0000000..a75464a
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/knife1.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/knife1.png.import b/DungeonShooting_Godot/resource/sprite/weapon/knife1.png.import
new file mode 100644
index 0000000..e13d626
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/knife1.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bxhbsq0wb2yo1"
+path="res://.godot/imported/knife1.png-7a8e87bb9fc40c8adf95391721186a58.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/weapon/knife1.png"
+dest_files=["res://.godot/imported/knife1.png-7a8e87bb9fc40c8adf95391721186a58.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/weapon/weapon0001/Weapon0001.png b/DungeonShooting_Godot/resource/sprite/weapon/weapon0001/Weapon0001.png
new file mode 100644
index 0000000..a8d9384
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/weapon0001/Weapon0001.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/weapon0001/Weapon0001.png.import b/DungeonShooting_Godot/resource/sprite/weapon/weapon0001/Weapon0001.png.import
new file mode 100644
index 0000000..60991cf
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/weapon0001/Weapon0001.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://civvcowt2wklr"
+path="res://.godot/imported/Weapon0001.png-4eb27e33b168dda75d544fb56e9370b2.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/weapon/weapon0001/Weapon0001.png"
+dest_files=["res://.godot/imported/Weapon0001.png-4eb27e33b168dda75d544fb56e9370b2.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/weapon/weapon0002/Weapon0002.png b/DungeonShooting_Godot/resource/sprite/weapon/weapon0002/Weapon0002.png
new file mode 100644
index 0000000..69e6b4d
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/weapon0002/Weapon0002.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/weapon0002/Weapon0002.png.import b/DungeonShooting_Godot/resource/sprite/weapon/weapon0002/Weapon0002.png.import
new file mode 100644
index 0000000..6d98fb0
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/weapon0002/Weapon0002.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b53kofmyan42g"
+path="res://.godot/imported/Weapon0002.png-f84831dbe20e83e0314a3a53978d34ea.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/weapon/weapon0002/Weapon0002.png"
+dest_files=["res://.godot/imported/Weapon0002.png-f84831dbe20e83e0314a3a53978d34ea.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/weapon/weapon0003/Weapon0003.png b/DungeonShooting_Godot/resource/sprite/weapon/weapon0003/Weapon0003.png
new file mode 100644
index 0000000..3c0c458
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/weapon0003/Weapon0003.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/weapon0003/Weapon0003.png.import b/DungeonShooting_Godot/resource/sprite/weapon/weapon0003/Weapon0003.png.import
new file mode 100644
index 0000000..cf3d12e
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/weapon0003/Weapon0003.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://clgf63extg800"
+path="res://.godot/imported/Weapon0003.png-5a0da135506f9ff0bc0591a165fe8682.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/weapon/weapon0003/Weapon0003.png"
+dest_files=["res://.godot/imported/Weapon0003.png-5a0da135506f9ff0bc0591a165fe8682.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/weapon/weapon0005/Weapon0005.png b/DungeonShooting_Godot/resource/sprite/weapon/weapon0005/Weapon0005.png
new file mode 100644
index 0000000..dd42c8a
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/weapon0005/Weapon0005.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/weapon/weapon0005/Weapon0005.png.import b/DungeonShooting_Godot/resource/sprite/weapon/weapon0005/Weapon0005.png.import
new file mode 100644
index 0000000..e535ca7
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/weapon/weapon0005/Weapon0005.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://504f1r0mi33n"
+path="res://.godot/imported/Weapon0005.png-c52c1188e23836aa507447c2088105f4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/weapon/weapon0005/Weapon0005.png"
+dest_files=["res://.godot/imported/Weapon0005.png-c52c1188e23836aa507447c2088105f4.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/Role0001.tres b/DungeonShooting_Godot/resource/spriteFrames/Role0001.tres
new file mode 100644
index 0000000..2008cc6
--- /dev/null
+++ b/DungeonShooting_Godot/resource/spriteFrames/Role0001.tres
@@ -0,0 +1,117 @@
+[gd_resource type="SpriteFrames" load_steps=15 format=3 uid="uid://n11thtali6es"]
+
+[ext_resource type="Texture2D" uid="uid://bhwhhg2dfsr26" path="res://resource/sprite/role/role2.png" id="1_012k1"]
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_tmewn"]
+atlas = ExtResource("1_012k1")
+region = Rect2(0, 0, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_dvg4a"]
+atlas = ExtResource("1_012k1")
+region = Rect2(0, 24, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_kvuct"]
+atlas = ExtResource("1_012k1")
+region = Rect2(16, 24, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_5op76"]
+atlas = ExtResource("1_012k1")
+region = Rect2(32, 24, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_helyc"]
+atlas = ExtResource("1_012k1")
+region = Rect2(48, 24, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_67mn8"]
+atlas = ExtResource("1_012k1")
+region = Rect2(48, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_jeywq"]
+atlas = ExtResource("1_012k1")
+region = Rect2(32, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_oycx8"]
+atlas = ExtResource("1_012k1")
+region = Rect2(16, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_tjg1t"]
+atlas = ExtResource("1_012k1")
+region = Rect2(0, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_2ltxw"]
+atlas = ExtResource("1_012k1")
+region = Rect2(0, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_x1va1"]
+atlas = ExtResource("1_012k1")
+region = Rect2(16, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_ic2p5"]
+atlas = ExtResource("1_012k1")
+region = Rect2(32, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_j3hdu"]
+atlas = ExtResource("1_012k1")
+region = Rect2(48, 48, 16, 24)
+
+[resource]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_tmewn")
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_dvg4a")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_kvuct")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_5op76")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_helyc")
+}],
+"loop": true,
+"name": &"idle",
+"speed": 7.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_67mn8")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_jeywq")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_oycx8")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_tjg1t")
+}],
+"loop": true,
+"name": &"reverseRun",
+"speed": 10.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_2ltxw")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_x1va1")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_ic2p5")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_j3hdu")
+}],
+"loop": true,
+"name": &"run",
+"speed": 10.0
+}]
diff --git a/DungeonShooting_Godot/resource/spriteFrames/Weapon0001.tres b/DungeonShooting_Godot/resource/spriteFrames/Weapon0001.tres
index 82eb0df..da7b2a8 100644
--- a/DungeonShooting_Godot/resource/spriteFrames/Weapon0001.tres
+++ b/DungeonShooting_Godot/resource/spriteFrames/Weapon0001.tres
@@ -1,6 +1,6 @@
[gd_resource type="SpriteFrames" load_steps=2 format=3 uid="uid://5m0qs7m4er5u"]
-[ext_resource type="Texture2D" uid="uid://civvcowt2wklr" path="res://resource/sprite/gun/weapon0001/Weapon0001.png" id="1_derf1"]
+[ext_resource type="Texture2D" uid="uid://civvcowt2wklr" path="res://resource/sprite/weapon/weapon0001/Weapon0001.png" id="1_derf1"]
[resource]
animations = [{
diff --git a/DungeonShooting_Godot/resource/spriteFrames/Weapon0002.tres b/DungeonShooting_Godot/resource/spriteFrames/Weapon0002.tres
index 0f6c248..9a55286 100644
--- a/DungeonShooting_Godot/resource/spriteFrames/Weapon0002.tres
+++ b/DungeonShooting_Godot/resource/spriteFrames/Weapon0002.tres
@@ -1,6 +1,6 @@
[gd_resource type="SpriteFrames" load_steps=2 format=3 uid="uid://domhmo4flmlt0"]
-[ext_resource type="Texture2D" uid="uid://b53kofmyan42g" path="res://resource/sprite/gun/weapon0002/Weapon0002.png" id="1_2tglc"]
+[ext_resource type="Texture2D" uid="uid://b53kofmyan42g" path="res://resource/sprite/weapon/weapon0002/Weapon0002.png" id="1_2tglc"]
[resource]
animations = [{
diff --git a/DungeonShooting_Godot/resource/spriteFrames/Weapon0003.tres b/DungeonShooting_Godot/resource/spriteFrames/Weapon0003.tres
index a0ca33a..0b2c99f 100644
--- a/DungeonShooting_Godot/resource/spriteFrames/Weapon0003.tres
+++ b/DungeonShooting_Godot/resource/spriteFrames/Weapon0003.tres
@@ -1,6 +1,6 @@
[gd_resource type="SpriteFrames" load_steps=2 format=3 uid="uid://c7dt1uwdybn5"]
-[ext_resource type="Texture2D" uid="uid://clgf63extg800" path="res://resource/sprite/gun/weapon0003/Weapon0003.png" id="1_ioiy8"]
+[ext_resource type="Texture2D" uid="uid://clgf63extg800" path="res://resource/sprite/weapon/weapon0003/Weapon0003.png" id="1_ioiy8"]
[resource]
animations = [{
diff --git a/DungeonShooting_Godot/resource/spriteFrames/Weapon0005.tres b/DungeonShooting_Godot/resource/spriteFrames/Weapon0005.tres
index 3939595..42bfa7e 100644
--- a/DungeonShooting_Godot/resource/spriteFrames/Weapon0005.tres
+++ b/DungeonShooting_Godot/resource/spriteFrames/Weapon0005.tres
@@ -1,6 +1,6 @@
[gd_resource type="SpriteFrames" load_steps=2 format=3 uid="uid://djdvlmqsn8bie"]
-[ext_resource type="Texture2D" uid="uid://504f1r0mi33n" path="res://resource/sprite/gun/weapon0005/Weapon0005.png" id="1_85vfm"]
+[ext_resource type="Texture2D" uid="uid://504f1r0mi33n" path="res://resource/sprite/weapon/weapon0005/Weapon0005.png" id="1_85vfm"]
[resource]
animations = [{
diff --git a/DungeonShooting_Godot/resource/theme/mainTheme.tres b/DungeonShooting_Godot/resource/theme/mainTheme.tres
index 878ec09..13537f9 100644
--- a/DungeonShooting_Godot/resource/theme/mainTheme.tres
+++ b/DungeonShooting_Godot/resource/theme/mainTheme.tres
@@ -1,6 +1,6 @@
[gd_resource type="Theme" load_steps=78 format=3 uid="uid://ds668te2rph30"]
-[ext_resource type="FontFile" uid="uid://cad0in7dtweo5" path="res://resource/font/VonwaonBitmap-16px.ttf" id="1_4q7uh"]
+[ext_resource type="FontFile" uid="uid://cad0in7dtweo5" path="res://resource/font/VonwaonBitmap-16px.ttf" id="1_yjvvv"]
[sub_resource type="StyleBoxFlat" id="1"]
content_margin_left = 6.0
@@ -352,7 +352,7 @@
[sub_resource type="ImageTexture" id="58"]
-[sub_resource type="Image" id="Image_5qnx0"]
+[sub_resource type="Image" id="Image_tvxyf"]
data = {
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 39, 255, 255, 255, 67, 255, 255, 255, 67, 255, 255, 255, 39, 255, 255, 255, 1, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 39, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 39, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 66, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 66, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 66, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 66, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 39, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 39, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 39, 255, 255, 255, 67, 255, 255, 255, 67, 255, 255, 255, 39, 255, 255, 255, 1, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
"format": "RGBA8",
@@ -362,7 +362,7 @@
}
[sub_resource type="ImageTexture" id="60"]
-image = SubResource("Image_5qnx0")
+image = SubResource("Image_tvxyf")
[sub_resource type="StyleBoxTexture" id="61"]
content_margin_left = 2.0
@@ -372,7 +372,7 @@
texture = SubResource("60")
region_rect = Rect2(0, 0, 12, 12)
-[sub_resource type="Image" id="Image_b0spx"]
+[sub_resource type="Image" id="Image_4ylaa"]
data = {
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 247, 247, 247, 0, 248, 248, 248, 0, 248, 248, 248, 0, 247, 247, 247, 0, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 191, 191, 191, 4, 247, 247, 247, 98, 248, 248, 248, 167, 248, 248, 248, 167, 247, 247, 247, 98, 191, 191, 191, 4, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 247, 247, 0, 247, 247, 247, 97, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 247, 247, 247, 97, 247, 247, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 248, 248, 0, 248, 248, 248, 164, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 164, 248, 248, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 248, 248, 0, 248, 248, 248, 164, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 164, 248, 248, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 247, 247, 0, 247, 247, 247, 97, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 247, 247, 247, 97, 247, 247, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 191, 191, 191, 4, 247, 247, 247, 98, 248, 248, 248, 167, 248, 248, 248, 167, 247, 247, 247, 98, 191, 191, 191, 4, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 247, 247, 247, 0, 248, 248, 248, 0, 248, 248, 248, 0, 247, 247, 247, 0, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
"format": "RGBA8",
@@ -382,7 +382,7 @@
}
[sub_resource type="ImageTexture" id="63"]
-image = SubResource("Image_b0spx")
+image = SubResource("Image_4ylaa")
[sub_resource type="StyleBoxTexture" id="64"]
content_margin_left = 2.0
@@ -392,7 +392,7 @@
texture = SubResource("63")
region_rect = Rect2(0, 0, 12, 12)
-[sub_resource type="Image" id="Image_sem6x"]
+[sub_resource type="Image" id="Image_8cfag"]
data = {
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 127, 127, 127, 4, 173, 173, 173, 97, 173, 173, 173, 166, 173, 173, 173, 166, 173, 173, 173, 97, 127, 127, 127, 4, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 172, 172, 0, 172, 172, 172, 96, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 172, 172, 172, 96, 172, 172, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 173, 173, 0, 173, 173, 173, 163, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 163, 173, 173, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 173, 173, 0, 173, 173, 173, 163, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 163, 173, 173, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 172, 172, 0, 172, 172, 172, 96, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 172, 172, 172, 96, 172, 172, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 127, 127, 127, 4, 173, 173, 173, 97, 173, 173, 173, 166, 173, 173, 173, 166, 173, 173, 173, 97, 127, 127, 127, 4, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
"format": "RGBA8",
@@ -402,7 +402,7 @@
}
[sub_resource type="ImageTexture" id="66"]
-image = SubResource("Image_sem6x")
+image = SubResource("Image_8cfag")
[sub_resource type="StyleBoxTexture" id="67"]
content_margin_left = 2.0
@@ -412,7 +412,7 @@
texture = SubResource("66")
region_rect = Rect2(0, 0, 12, 12)
-[sub_resource type="Image" id="Image_xueq6"]
+[sub_resource type="Image" id="Image_dgvbi"]
data = {
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 16, 255, 255, 255, 16, 255, 255, 255, 4, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 16, 255, 255, 255, 21, 255, 255, 255, 21, 255, 255, 255, 16, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 16, 255, 255, 255, 21, 255, 255, 255, 21, 255, 255, 255, 16, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 16, 255, 255, 255, 16, 255, 255, 255, 4, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
"format": "RGBA8",
@@ -422,7 +422,7 @@
}
[sub_resource type="ImageTexture" id="69"]
-image = SubResource("Image_xueq6")
+image = SubResource("Image_dgvbi")
[sub_resource type="StyleBoxTexture" id="70"]
content_margin_left = 0.0
@@ -446,7 +446,7 @@
content_margin_right = 4.0
content_margin_bottom = 4.0
-[sub_resource type="Image" id="Image_o6wbf"]
+[sub_resource type="Image" id="Image_qhdle"]
data = {
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 76, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 76, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 76, 255, 255, 255, 228, 255, 255, 255, 188, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 188, 255, 255, 255, 228, 255, 255, 255, 76, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 18, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 187, 255, 255, 255, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 187, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 18, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 185, 255, 255, 255, 17, 255, 255, 255, 17, 255, 255, 255, 186, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 190, 255, 255, 255, 229, 255, 255, 255, 185, 255, 255, 255, 185, 255, 255, 255, 229, 255, 255, 255, 189, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 191, 255, 255, 255, 229, 255, 255, 255, 229, 255, 255, 255, 190, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 187, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 187, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 18, 255, 255, 255, 19, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 186, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 185, 255, 255, 255, 229, 255, 255, 255, 189, 255, 255, 255, 19, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 189, 255, 255, 255, 229, 255, 255, 255, 185, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 76, 255, 255, 255, 229, 255, 255, 255, 190, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 190, 255, 255, 255, 229, 255, 255, 255, 76, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 77, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 77, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
"format": "RGBA8",
@@ -456,7 +456,7 @@
}
[sub_resource type="ImageTexture" id="56"]
-image = SubResource("Image_o6wbf")
+image = SubResource("Image_qhdle")
[sub_resource type="StyleBoxFlat" id="57"]
content_margin_left = 6.0
@@ -506,7 +506,7 @@
region_rect = Rect2(0, 0, 12, 12)
[resource]
-default_font = ExtResource("1_4q7uh")
+default_font = ExtResource("1_yjvvv")
default_font_size = 32
Button/colors/font_color = Color(0.780392, 0.780392, 0.780392, 1)
Button/colors/font_color_disabled = Color(1, 1, 1, 0.3)
@@ -516,7 +516,7 @@
Button/colors/icon_color_hover = Color(1.15, 1.15, 1.15, 1)
Button/colors/icon_color_pressed = Color(0.135294, 0.496079, 1.04176, 1)
Button/constants/hseparation = 2
-Button/fonts/font = ExtResource("1_4q7uh")
+Button/fonts/font = ExtResource("1_yjvvv")
Button/styles/disabled = SubResource("1")
Button/styles/focus = SubResource("2")
Button/styles/hover = SubResource("3")
@@ -618,7 +618,7 @@
Label/constants/shadow_as_outline = 0
Label/constants/shadow_offset_x = 1
Label/constants/shadow_offset_y = 1
-Label/fonts/font = ExtResource("1_4q7uh")
+Label/fonts/font = ExtResource("1_yjvvv")
Label/styles/normal = SubResource("54")
LineEdit/colors/clear_button_color = Color(0.780392, 0.780392, 0.780392, 1)
LineEdit/colors/clear_button_color_pressed = Color(0.117647, 0.431373, 0.905882, 1)
@@ -629,7 +629,7 @@
LineEdit/colors/read_only = Color(1, 1, 1, 0.3)
LineEdit/colors/selection_color = Color(0.117647, 0.431373, 0.905882, 0.4)
LineEdit/constants/minimum_spaces = 12
-LineEdit/fonts/font = ExtResource("1_4q7uh")
+LineEdit/fonts/font = ExtResource("1_yjvvv")
LineEdit/icons/clear = SubResource("56")
LineEdit/styles/focus = SubResource("2")
LineEdit/styles/normal = SubResource("4")
diff --git a/DungeonShooting_Godot/scene/Main.tscn b/DungeonShooting_Godot/scene/Main.tscn
index 5ff8d02..8ba9d85 100644
--- a/DungeonShooting_Godot/scene/Main.tscn
+++ b/DungeonShooting_Godot/scene/Main.tscn
@@ -1,7 +1,7 @@
[gd_scene load_steps=5 format=3 uid="uid://lbe753cb8heb"]
-[ext_resource type="Script" path="res://src/game/GameApplication.cs" id="1_sm6n8"]
-[ext_resource type="Script" path="res://src/game/camera/GameCamera.cs" id="2_00ruf"]
+[ext_resource type="Script" path="res://src/game/GameApplication.cs" id="1_8bmj5"]
+[ext_resource type="Script" path="res://src/game/camera/GameCamera.cs" id="2_5j1s8"]
[sub_resource type="Shader" id="1"]
code = "shader_type canvas_item;
@@ -21,7 +21,7 @@
shader_parameter/offset = Vector2(0, 0)
[node name="Main" type="Node2D" node_paths=PackedStringArray("SubViewport", "SubViewportContainer", "SceneRoot", "GlobalNodeRoot")]
-script = ExtResource("1_sm6n8")
+script = ExtResource("1_8bmj5")
SubViewport = NodePath("ViewCanvas/SubViewportContainer/SubViewport")
SubViewportContainer = NodePath("ViewCanvas/SubViewportContainer")
SceneRoot = NodePath("ViewCanvas/SubViewportContainer/SubViewport/SceneRoot")
@@ -49,6 +49,6 @@
process_callback = 0
limit_smoothed = true
editor_draw_drag_margin = true
-script = ExtResource("2_00ruf")
+script = ExtResource("2_5j1s8")
[node name="GlobalNodeRoot" type="Node2D" parent="."]
diff --git a/DungeonShooting_Godot/scene/test/TestTileLayer.tscn b/DungeonShooting_Godot/scene/test/TestTileLayer.tscn
index f0dd8ff..c9a97e3 100644
--- a/DungeonShooting_Godot/scene/test/TestTileLayer.tscn
+++ b/DungeonShooting_Godot/scene/test/TestTileLayer.tscn
@@ -2,7 +2,7 @@
[ext_resource type="Texture2D" uid="uid://dj8nrd5od4fcl" path="res://resource/sprite/map/map1/16x16 dungeon ii wall reconfig v04 spritesheet.png" id="1"]
[ext_resource type="Texture2D" uid="uid://chd2vtesap5cf" path="res://resource/sprite/role/enemy0001/Enemy0001.png" id="2"]
-[ext_resource type="Texture2D" uid="uid://5geiuvv6hyov" path="res://resource/sprite/gun/gun2.png" id="3"]
+[ext_resource type="Texture2D" uid="uid://5geiuvv6hyov" path="res://resource/sprite/weapon/gun2.png" id="3"]
[ext_resource type="Texture2D" uid="uid://dto03bc2qbhnj" path="res://resource/sprite/shell/shellCase.png" id="4"]
diff --git a/DungeonShooting_Godot/src/config/ExcelConfig_ActivityObject.cs b/DungeonShooting_Godot/src/config/ExcelConfig_ActivityObject.cs
index cc1ef0b..12e9730 100644
--- a/DungeonShooting_Godot/src/config/ExcelConfig_ActivityObject.cs
+++ b/DungeonShooting_Godot/src/config/ExcelConfig_ActivityObject.cs
@@ -34,6 +34,12 @@
public string Prefab;
///
+ /// 物体备注
+ ///
+ [JsonInclude]
+ public string Remark;
+
+ ///
/// 返回浅拷贝出的新对象
///
public ActivityObject Clone()
@@ -42,6 +48,7 @@
inst.Id = Id;
inst.Type = Type;
inst.Prefab = Prefab;
+ inst.Remark = Remark;
return inst;
}
}
diff --git a/DungeonShooting_Godot/src/config/ExcelConfig_Weapon.cs b/DungeonShooting_Godot/src/config/ExcelConfig_Weapon.cs
index b80626a..200bb39 100644
--- a/DungeonShooting_Godot/src/config/ExcelConfig_Weapon.cs
+++ b/DungeonShooting_Godot/src/config/ExcelConfig_Weapon.cs
@@ -8,23 +8,16 @@
public class Weapon
{
///
- /// 物体唯一id
- /// 不需要添加类型前缀
+ /// 武器属性id
///
[JsonInclude]
public string Id;
///
- /// 武器 Prefab, 必须继承场景 "res://prefab/weapon/Weapon.tscn"
+ /// 属性绑定武器的Id,如果是Ai使用的数据, 则填空串
///
[JsonInclude]
- public string Prefab;
-
- ///
- /// 重量
- ///
- [JsonInclude]
- public float Weight;
+ public string WeaponId;
///
/// 武器显示的名称
@@ -39,6 +32,12 @@
public string Icon;
///
+ /// 重量
+ ///
+ [JsonInclude]
+ public float Weight;
+
+ ///
/// 武器类型:
/// 1.副武器
/// 2.主武器
@@ -66,13 +65,13 @@
public int MaxAmmoCapacity;
///
- /// 起始备用弹药数量
+ /// 默认起始备用弹药数量
///
[JsonInclude]
public int StandbyAmmoCapacity;
///
- /// 装弹时间, 单位: 秒
+ /// 装弹时间 (单位: 秒)
///
[JsonInclude]
public float ReloadTime;
@@ -198,22 +197,16 @@
public float ScatteringRangeBackTime;
///
- /// 子弹飞行最大距离
- ///
- [JsonInclude]
- public float MaxDistance;
-
- ///
/// 子弹飞行最小距离
///
[JsonInclude]
public float MinDistance;
///
- /// 最大后坐力 (仅用于开火后武器身抖动)
+ /// 子弹飞行最大距离
///
[JsonInclude]
- public float MaxBacklash;
+ public float MaxDistance;
///
/// 最小后坐力 (仅用于开火后武器身抖动)
@@ -222,6 +215,12 @@
public float MinBacklash;
///
+ /// 最大后坐力 (仅用于开火后武器身抖动)
+ ///
+ [JsonInclude]
+ public float MaxBacklash;
+
+ ///
/// 后坐力偏移回归回归速度
///
[JsonInclude]
@@ -258,16 +257,44 @@
public SerializeVector2 ThrowCollisionSize;
///
+ /// Ai属性
+ /// Ai 使用该武器时的武器数据, 设置该字段, 可让同一把武器在敌人和玩家手上有不同属性
+ ///
+ [JsonInclude]
+ public string AiUseAttributeId;
+
+ ///
+ /// Ai属性
+ /// 目标锁定时间, 也就是瞄准目标多久才会开火, (单位: 秒)
+ ///
+ [JsonInclude]
+ public float AiTargetLockingTime;
+
+ ///
+ /// Ai属性
+ /// Ai使用该武器发射的子弹速度缩放比
+ ///
+ [JsonInclude]
+ public float AiBulletSpeedScale;
+
+ ///
+ /// Ai属性
+ /// Ai使用该武器消耗弹药的概率, (0 - 1)
+ ///
+ [JsonInclude]
+ public float AiAmmoConsumptionProbability;
+
+ ///
/// 返回浅拷贝出的新对象
///
public Weapon Clone()
{
var inst = new Weapon();
inst.Id = Id;
- inst.Prefab = Prefab;
- inst.Weight = Weight;
+ inst.WeaponId = WeaponId;
inst.Name = Name;
inst.Icon = Icon;
+ inst.Weight = Weight;
inst.WeightType = WeightType;
inst.ContinuousShoot = ContinuousShoot;
inst.AmmoCapacity = AmmoCapacity;
@@ -294,16 +321,20 @@
inst.ScatteringRangeAddValue = ScatteringRangeAddValue;
inst.ScatteringRangeBackSpeed = ScatteringRangeBackSpeed;
inst.ScatteringRangeBackTime = ScatteringRangeBackTime;
- inst.MaxDistance = MaxDistance;
inst.MinDistance = MinDistance;
- inst.MaxBacklash = MaxBacklash;
+ inst.MaxDistance = MaxDistance;
inst.MinBacklash = MinBacklash;
+ inst.MaxBacklash = MaxBacklash;
inst.BacklashRegressionSpeed = BacklashRegressionSpeed;
inst.UpliftAngle = UpliftAngle;
inst.DefaultAngle = DefaultAngle;
inst.UpliftAngleRestore = UpliftAngleRestore;
inst.BulletId = BulletId;
inst.ThrowCollisionSize = ThrowCollisionSize;
+ inst.AiUseAttributeId = AiUseAttributeId;
+ inst.AiTargetLockingTime = AiTargetLockingTime;
+ inst.AiBulletSpeedScale = AiBulletSpeedScale;
+ inst.AiAmmoConsumptionProbability = AiAmmoConsumptionProbability;
return inst;
}
}
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
index 50cf1dc..ea4dfc8 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
@@ -271,19 +271,12 @@
}
#endif
World = world;
-
ItemId = itemId;
Name = GetType().Name + (_instanceIndex++);
-
- //AnimatedSprite = GetNode("AnimatedSprite");
_blendShaderMaterial = AnimatedSprite.Material as ShaderMaterial;
- //ShadowSprite = GetNode("ShadowSprite");
ShadowSprite.Visible = false;
- //Collision = GetNode("Collision");
-
MotionMode = MotionModeEnum.Floating;
MoveController = AddComponent();
-
OnInit();
}
@@ -1037,7 +1030,8 @@
{
if (Scale.Y < 0)
{
- AnimatedSprite.GlobalPosition = GlobalPosition + new Vector2(0, -Altitude) - _fallData.OriginSpritePosition.Rotated(Rotation) * Scale.Abs();
+ var pos = new Vector2(_fallData.OriginSpritePosition.X, -_fallData.OriginSpritePosition.Y);
+ AnimatedSprite.GlobalPosition = GlobalPosition + new Vector2(0, -Altitude) - pos.Rotated(Rotation + Mathf.Pi);
}
else
{
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
index ad25939..e1076aa 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
@@ -8,23 +8,38 @@
///
public static class Ids
{
+ ///
+ /// 玩家
+ ///
public const string Id_role0001 = "role0001";
public const string Id_weapon0001 = "weapon0001";
public const string Id_bullet0001 = "bullet0001";
public const string Id_bullet0002 = "bullet0002";
public const string Id_shell0001 = "shell0001";
+ ///
+ /// 地牢房间的门(东侧)
+ ///
public const string Id_other_door_e = "other_door_e";
+ ///
+ /// 地牢房间的门(西侧)
+ ///
public const string Id_other_door_w = "other_door_w";
+ ///
+ /// 地牢房间的门(南侧)
+ ///
public const string Id_other_door_s = "other_door_s";
+ ///
+ /// 地牢房间的门(北侧)
+ ///
public const string Id_other_door_n = "other_door_n";
}
private static void _InitRegister()
{
- _activityRegisterMap.Add("role0001", "res://prefab/role/Player.tscn");
+ _activityRegisterMap.Add("role0001", "res://prefab/role/Role0001.tscn");
_activityRegisterMap.Add("weapon0001", "res://prefab/weapon/Weapon0001.tscn");
- _activityRegisterMap.Add("bullet0001", "res://prefab/weapon/bullet/Bullet0001.tscn");
- _activityRegisterMap.Add("bullet0002", "res://prefab/weapon/bullet/Bullet0002.tscn");
- _activityRegisterMap.Add("shell0001", "res://prefab/weapon/shell/Shell0001.tscn");
+ _activityRegisterMap.Add("bullet0001", "res://prefab/bullet/Bullet0001.tscn");
+ _activityRegisterMap.Add("bullet0002", "res://prefab/bullet/Bullet0001.tscn");
+ _activityRegisterMap.Add("shell0001", "res://prefab/shell/Shell0001.tscn");
_activityRegisterMap.Add("other_door_e", "res://prefab/map/RoomDoor_E.tscn");
_activityRegisterMap.Add("other_door_w", "res://prefab/map/RoomDoor_W.tscn");
_activityRegisterMap.Add("other_door_s", "res://prefab/map/RoomDoor_S.tscn");
diff --git a/DungeonShooting_Godot/src/framework/generator/ExcelGenerator.cs b/DungeonShooting_Godot/src/framework/generator/ExcelGenerator.cs
index 61a5808..9558609 100644
--- a/DungeonShooting_Godot/src/framework/generator/ExcelGenerator.cs
+++ b/DungeonShooting_Godot/src/framework/generator/ExcelGenerator.cs
@@ -40,6 +40,13 @@
foreach (var item in array)
{
var id = item["Id"];
+ var remark = item["Remark"] + "";
+ if (!string.IsNullOrEmpty(remark))
+ {
+ code1 += $" /// \n";
+ code1 += $" /// {remark}\n";
+ code1 += $" /// \n";
+ }
code1 += $" public const string Id_{id} = \"{id}\";\n";
code2 += $" _activityRegisterMap.Add(\"{id}\", \"{item["Prefab"]}\");\n";
}
diff --git a/DungeonShooting_Godot/src/game/Cursor.cs b/DungeonShooting_Godot/src/game/Cursor.cs
index 3d382cf..cbde2ae 100644
--- a/DungeonShooting_Godot/src/game/Cursor.cs
+++ b/DungeonShooting_Godot/src/game/Cursor.cs
@@ -110,7 +110,7 @@
var len = GlobalPosition.DistanceTo(tunPos);
if (targetGun.Attribute != null)
{
- len = Mathf.Max(0, len - targetGun.Attribute.FirePosition.X);
+ len = Mathf.Max(0, len - targetGun.FirePoint.Position.X);
}
scope = len / GameConfig.ScatteringDistance * scope;
}
diff --git a/DungeonShooting_Godot/src/game/GameApplication.cs b/DungeonShooting_Godot/src/game/GameApplication.cs
index 4273b82..271affb 100644
--- a/DungeonShooting_Godot/src/game/GameApplication.cs
+++ b/DungeonShooting_Godot/src/game/GameApplication.cs
@@ -109,7 +109,7 @@
Engine.MaxFps = 60;
//调试绘制开关
ActivityObject.IsDebug = Debug;
- //Engine.TimeScale = 0.2f;
+ //Engine.TimeScale = 0.4f;
//窗体大小改变
GetWindow().SizeChanged += OnWindowSizeChanged;
diff --git a/DungeonShooting_Godot/src/game/item/weapon/Weapon.cs b/DungeonShooting_Godot/src/game/item/weapon/Weapon.cs
index e1c254e..959487f 100644
--- a/DungeonShooting_Godot/src/game/item/weapon/Weapon.cs
+++ b/DungeonShooting_Godot/src/game/item/weapon/Weapon.cs
@@ -1,5 +1,6 @@
using Godot;
using System;
+using Config;
///
/// 武器的基类
@@ -14,10 +15,10 @@
///
/// 武器属性数据
///
- public WeaponAttribute Attribute => _weaponAttribute;
-
- private WeaponAttribute _weaponAttribute;
- private WeaponAttribute _originWeaponAttribute;
+ public ExcelConfig.Weapon Attribute => _weaponAttribute;
+ private ExcelConfig.Weapon _weaponAttribute;
+ private ExcelConfig.Weapon _playerWeaponAttribute;
+ private ExcelConfig.Weapon _aiWeaponAttribute;
///
/// 武器攻击的目标阵营
@@ -164,22 +165,20 @@
///
/// 初始化武器属性
///
- public void InitWeapon(WeaponAttribute attribute)
+ public void InitWeapon(ExcelConfig.Weapon attribute)
{
- _originWeaponAttribute = attribute;
+ _playerWeaponAttribute = attribute;
_weaponAttribute = attribute;
-
- //设置动画
- if (attribute.SpriteFrames != null)
+ if (!string.IsNullOrEmpty(attribute.AiUseAttributeId))
{
- AnimatedSprite.SpriteFrames = ResourceManager.Load(attribute.SpriteFrames);
+ _aiWeaponAttribute = ExcelConfig.Weapon_Map[attribute.AiUseAttributeId];
}
- AnimatedSprite.Position = Attribute.ThrowSpritePosition;
-
- //开火位置
- FirePoint.Position = Attribute.FirePosition;
- //弹壳投抛起始位置
- ShellPoint.Position = Attribute.ShellPosition;
+ else
+ {
+ _aiWeaponAttribute = attribute;
+ }
+ //未完成
+ //AnimatedSprite.Position = Attribute.ThrowSpritePosition;
if (Attribute.AmmoCapacity > Attribute.MaxAmmoCapacity)
{
@@ -191,7 +190,7 @@
//剩余弹药量
ResidueAmmo = Mathf.Min(Attribute.StandbyAmmoCapacity + CurrAmmo, Attribute.MaxAmmoCapacity) - CurrAmmo;
- ThrowCollisionSize = new Vector2(20, 15);
+ ThrowCollisionSize = attribute.ThrowCollisionSize.AsVector2();
}
///
@@ -297,6 +296,7 @@
protected override void Process(float delta)
{
+ //GD.Print("AnimatedSprite: " + AnimatedSprite.Position);
//这把武器被扔在地上, 或者当前武器没有被使用
if (Master == null || Master.Holster.ActiveWeapon != this)
{
@@ -614,7 +614,7 @@
_continuousCount = _continuousCount > 0 ? _continuousCount - 1 : 0;
//减子弹数量
- if (_originWeaponAttribute != _weaponAttribute) //Ai使用该武器, 有一定概率不消耗弹药
+ if (_playerWeaponAttribute != _weaponAttribute) //Ai使用该武器, 有一定概率不消耗弹药
{
if (Utils.RandomRangeFloat(0, 1) < _weaponAttribute.AiAmmoConsumptionProbability) //触发消耗弹药
{
@@ -1046,16 +1046,14 @@
public void PickUpWeapon(Role master)
{
Master = master;
- if (master.IsAi && _originWeaponAttribute.AiUseAttribute != null)
+ if (master.IsAi)
{
- _weaponAttribute = _originWeaponAttribute.AiUseAttribute;
+ _weaponAttribute = _aiWeaponAttribute;
}
else
{
- _weaponAttribute = _originWeaponAttribute;
+ _weaponAttribute = _playerWeaponAttribute;
}
- //握把位置
- AnimatedSprite.Position = Attribute.SpritePosition;
//停止动画
AnimationPlayer.Stop();
//清除泛白效果
@@ -1078,8 +1076,9 @@
{
Master = null;
CollisionLayer = _tempLayer;
- _weaponAttribute = _originWeaponAttribute;
- AnimatedSprite.Position = Attribute.ThrowSpritePosition;
+ _weaponAttribute = _playerWeaponAttribute;
+ //未完成
+ //AnimatedSprite.Position = Attribute.ThrowSpritePosition;
//清除 Ai 拾起标记
RemoveSign(SignNames.AiFindWeaponSign);
OnRemove();
diff --git a/DungeonShooting_Godot/src/game/item/weapon/WeaponAttribute.cs b/DungeonShooting_Godot/src/game/item/weapon/WeaponAttribute.cs
index b2731bc..5ac32ed 100644
--- a/DungeonShooting_Godot/src/game/item/weapon/WeaponAttribute.cs
+++ b/DungeonShooting_Godot/src/game/item/weapon/WeaponAttribute.cs
@@ -1,277 +1,277 @@
-using System;
-using Godot;
-
-///
-/// 武器上的属性
-///
-public class WeaponAttribute
-{
- ///
- /// 武器显示的名称
- ///
- public string Name = "Gun1";
- ///
- /// 武器 Prefab, 必须继承场景 "res://prefab/weapon/Weapon.tscn"
- ///
- public string WeaponPrefab = ResourcePath.prefab_weapon_Weapon_tscn;
- ///
- /// 武器类型
- ///
- public WeaponWeightType WeightType = WeaponWeightType.MainWeapon;
- ///
- /// 武器的图标
- ///
- public string Icon = ResourcePath.resource_sprite_gun_gun1_png;
- ///
- /// 动画序列帧资源名称
- ///
- public string SpriteFrames;
- ///
- /// 是否连续发射, 如果为false, 则每次发射都需要扣动扳机
- ///
- public bool ContinuousShoot = true;
- ///
- /// 弹夹容量
- ///
- public int AmmoCapacity = 30;
- ///
- /// 弹药容量上限
- ///
- public int MaxAmmoCapacity = 120;
- ///
- /// 起始备用弹药数量
- ///
- public int StandbyAmmoCapacity = 90;
- ///
- /// 装弹时间, 单位: 秒
- ///
- public float ReloadTime = 1.5f;
- ///
- /// 每粒子弹是否是单独装填, 如果是, 那么每上一发子弹的时间就是 ReloadTime, 可以做霰弹武器装填效果
- ///
- public bool AloneReload = false;
- ///
- /// 单独装填时每次装填子弹数量, 必须要将 'AloneReload' 属性设置为 true
- ///
- public int AloneReloadCount = 1;
- ///
- /// 单独装填的子弹时可以立即射击, 必须要将 'AloneReload' 属性设置为 true
- ///
- public bool AloneReloadCanShoot = false;
- ///
- /// 是否为松发开火, 也就是松开扳机才开火, 若要启用该属性, 必须将 'ContinuousShoot' 设置为 false
- ///
- public bool LooseShoot = false;
- ///
- /// 最少需要蓄力多久才能开火, 必须将 'LooseShoot' 设置为 true
- ///
- public float MinChargeTime = 0f;
- ///
- /// 连续发射最小次数, 仅当 ContinuousShoot 为 false 时生效
- ///
- public int MinContinuousCount = 1;
- ///
- /// 连续发射最大次数, 仅当 ContinuousShoot 为 false 时生效
- ///
- public int MaxContinuousCount = 1;
- ///
- /// 按下一次扳机后需要多长时间才能再次感应按下
- ///
- public float TriggerInterval = 0;
- ///
- /// 初始射速, 初始每分钟能开火次数
- ///
- public float StartFiringSpeed = 300;
- ///
- /// 最终射速, 最终每分钟能开火次数, 仅当 ContinuousShoot 为 true 时生效
- ///
- public float FinalFiringSpeed = 300;
- ///
- /// 按下扳机并开火后射速增加速率
- ///
- public float FiringSpeedAddSpeed = 2;
- ///
- /// 松开扳机后射速消散速率
- ///
- public float FiringSpeedBackSpeed = 10;
- ///
- /// 单次开火发射子弹最小数量
- ///
- public int MinFireBulletCount = 1;
- ///
- /// 单次开火发射子弹最大数量
- ///
- public int MaxFireBulletCount = 1;
- ///
- /// 开火前延时
- ///
- public float DelayedTime = 0f;
- ///
- /// 初始散射半径
- ///
- public float StartScatteringRange = 0;
- ///
- /// 最终散射半径
- ///
- public float FinalScatteringRange = 20;
- ///
- /// 每次发射后散射增加值
- ///
- public float ScatteringRangeAddValue = 2;
- ///
- /// 松开扳机后散射销退速率
- ///
- public float ScatteringRangeBackSpeed = 10;
- ///
- /// 松开扳机多久后开始销退散射值
- ///
- public float ScatteringRangeBackTime = 0f;
- ///
- /// 子弹飞行最大距离
- ///
- public float MaxDistance = 600;
- ///
- /// 子弹飞行最小距离
- ///
- public float MinDistance = 800;
- ///
- /// 开火位置
- ///
- public Vector2 FirePosition = new Vector2(11, 0);
- ///
- /// 精灵位置
- ///
- public Vector2 SpritePosition = new Vector2(4, -3);
- ///
- /// 弹壳投抛起始位置
- ///
- public Vector2 ShellPosition = new Vector2(5, -2.5f);
- ///
- /// 重量
- ///
- public float Weight = 11;
- ///
- /// 最大后坐力 (仅用于开火后武器身抖动)
- ///
- public float MaxBacklash = 4;
- ///
- /// 最小后坐力 (仅用于开火后武器身抖动)
- ///
- public float MinBacklash = 2;
- ///
- /// 后坐力偏移回归回归速度
- ///
- public float BacklashRegressionSpeed = 35f;
- ///
- /// 开火后武器口上抬角度
- ///
- public float UpliftAngle = 30;
- ///
- /// 武器默认上抬角度
- ///
- public float DefaultAngle = 0;
- ///
- /// 开火后武器口角度恢复速度倍数
- ///
- public float UpliftAngleRestore = 1f;
- ///
- /// 默认射出的子弹
- ///
- public string BulletId = ActivityIdPrefix.Bullet + "0001";
- ///
- /// 武器精灵投抛时的旋转中心坐标
- ///
- public Vector2 ThrowSpritePosition = new Vector2(0, 0);
- ///
- /// 投抛状态下物体碰撞器大小
- ///
- public Vector2 ThrowCollisionSize = new Vector2(20, 15);
-
- ///
- /// 克隆一份新的属性配置
- ///
- ///
- public WeaponAttribute Clone()
- {
- var attr = _Clone();
- if (AiUseAttribute != null)
- {
- attr.AiUseAttribute = AiUseAttribute._Clone();
- }
- return attr;
- }
-
- private WeaponAttribute _Clone()
- {
- var attr = new WeaponAttribute();
- attr.Name = Name;
- attr.WeaponPrefab = WeaponPrefab;
- attr.WeightType = WeightType;
- attr.Icon = Icon;
- attr.SpriteFrames = SpriteFrames;
- attr.ContinuousShoot = ContinuousShoot;
- attr.AmmoCapacity = AmmoCapacity;
- attr.MaxAmmoCapacity = MaxAmmoCapacity;
- attr.StandbyAmmoCapacity = StandbyAmmoCapacity;
- attr.ReloadTime = ReloadTime;
- attr.AloneReload = AloneReload;
- attr.AloneReloadCount = AloneReloadCount;
- attr.AloneReloadCanShoot = AloneReloadCanShoot;
- attr.LooseShoot = LooseShoot;
- attr.MinChargeTime = MinChargeTime;
- attr.MinContinuousCount = MinContinuousCount;
- attr.MaxContinuousCount = MaxContinuousCount;
- attr.TriggerInterval = TriggerInterval;
- attr.StartFiringSpeed = StartFiringSpeed;
- attr.FinalFiringSpeed = FinalFiringSpeed;
- attr.FiringSpeedAddSpeed = FiringSpeedAddSpeed;
- attr.FiringSpeedBackSpeed = FiringSpeedBackSpeed;
- attr.MinFireBulletCount = MinFireBulletCount;
- attr.MaxFireBulletCount = MaxFireBulletCount;
- attr.DelayedTime = DelayedTime;
- attr.StartScatteringRange = StartScatteringRange;
- attr.FinalScatteringRange = FinalScatteringRange;
- attr.ScatteringRangeAddValue = ScatteringRangeAddValue;
- attr.ScatteringRangeBackSpeed = ScatteringRangeBackSpeed;
- attr.ScatteringRangeBackTime = ScatteringRangeBackTime;
- attr.MaxDistance = MaxDistance;
- attr.MinDistance = MinDistance;
- attr.FirePosition = FirePosition;
- attr.ShellPosition = ShellPosition;
- attr.SpritePosition = SpritePosition;
- attr.Weight = Weight;
- attr.MaxBacklash = MaxBacklash;
- attr.MinBacklash = MinBacklash;
- attr.BacklashRegressionSpeed = BacklashRegressionSpeed;
- attr.UpliftAngle = UpliftAngle;
- attr.DefaultAngle = DefaultAngle;
- attr.UpliftAngleRestore = UpliftAngleRestore;
- attr.AiTargetLockingTime = AiTargetLockingTime;
- attr.BulletId = BulletId;
- attr.ThrowSpritePosition = ThrowSpritePosition;
- attr.ThrowCollisionSize = ThrowCollisionSize;
- return attr;
- }
-
- //------------------------------ Ai相关 -----------------------------
-
- ///
- /// 用于Ai, 目标锁定时间, 也就是瞄准目标多久才会开火
- ///
- public float AiTargetLockingTime = 0;
-
- ///
- /// 用于Ai, Ai使用该武器发射的子弹速度缩放比
- ///
- public float AiBulletSpeedScale = 0.7f;
-
- ///
- /// 用于Ai, Ai使用该武器消耗弹药的概率, (0 - 1)
- ///
- public float AiAmmoConsumptionProbability = 0f;
-
- ///
- /// Ai 使用该武器时的武器数据, 设置该字段, 可让同一把武器在敌人和玩家手上有不同属性
- ///
- public WeaponAttribute AiUseAttribute;
-}
\ No newline at end of file
+// using System;
+// using Godot;
+//
+// ///
+// /// 武器上的属性
+// ///
+// public class WeaponAttribute
+// {
+// ///
+// /// 武器显示的名称
+// ///
+// public string Name = "Gun1";
+// ///
+// /// 武器 Prefab, 必须继承场景 "res://prefab/weapon/Weapon.tscn"
+// ///
+// public string WeaponPrefab = ResourcePath.prefab_weapon_Weapon_tscn;
+// ///
+// /// 武器类型
+// ///
+// public WeaponWeightType WeightType = WeaponWeightType.MainWeapon;
+// ///
+// /// 武器的图标
+// ///
+// public string Icon = ResourcePath.resource_sprite_gun_gun1_png;
+// ///
+// /// 动画序列帧资源名称
+// ///
+// public string SpriteFrames;
+// ///
+// /// 是否连续发射, 如果为false, 则每次发射都需要扣动扳机
+// ///
+// public bool ContinuousShoot = true;
+// ///
+// /// 弹夹容量
+// ///
+// public int AmmoCapacity = 30;
+// ///
+// /// 弹药容量上限
+// ///
+// public int MaxAmmoCapacity = 120;
+// ///
+// /// 起始备用弹药数量
+// ///
+// public int StandbyAmmoCapacity = 90;
+// ///
+// /// 装弹时间, 单位: 秒
+// ///
+// public float ReloadTime = 1.5f;
+// ///
+// /// 每粒子弹是否是单独装填, 如果是, 那么每上一发子弹的时间就是 ReloadTime, 可以做霰弹武器装填效果
+// ///
+// public bool AloneReload = false;
+// ///
+// /// 单独装填时每次装填子弹数量, 必须要将 'AloneReload' 属性设置为 true
+// ///
+// public int AloneReloadCount = 1;
+// ///
+// /// 单独装填的子弹时可以立即射击, 必须要将 'AloneReload' 属性设置为 true
+// ///
+// public bool AloneReloadCanShoot = false;
+// ///
+// /// 是否为松发开火, 也就是松开扳机才开火, 若要启用该属性, 必须将 'ContinuousShoot' 设置为 false
+// ///
+// public bool LooseShoot = false;
+// ///
+// /// 最少需要蓄力多久才能开火, 必须将 'LooseShoot' 设置为 true
+// ///
+// public float MinChargeTime = 0f;
+// ///
+// /// 连续发射最小次数, 仅当 ContinuousShoot 为 false 时生效
+// ///
+// public int MinContinuousCount = 1;
+// ///
+// /// 连续发射最大次数, 仅当 ContinuousShoot 为 false 时生效
+// ///
+// public int MaxContinuousCount = 1;
+// ///
+// /// 按下一次扳机后需要多长时间才能再次感应按下
+// ///
+// public float TriggerInterval = 0;
+// ///
+// /// 初始射速, 初始每分钟能开火次数
+// ///
+// public float StartFiringSpeed = 300;
+// ///
+// /// 最终射速, 最终每分钟能开火次数, 仅当 ContinuousShoot 为 true 时生效
+// ///
+// public float FinalFiringSpeed = 300;
+// ///
+// /// 按下扳机并开火后射速增加速率
+// ///
+// public float FiringSpeedAddSpeed = 2;
+// ///
+// /// 松开扳机后射速消散速率
+// ///
+// public float FiringSpeedBackSpeed = 10;
+// ///
+// /// 单次开火发射子弹最小数量
+// ///
+// public int MinFireBulletCount = 1;
+// ///
+// /// 单次开火发射子弹最大数量
+// ///
+// public int MaxFireBulletCount = 1;
+// ///
+// /// 开火前延时
+// ///
+// public float DelayedTime = 0f;
+// ///
+// /// 初始散射半径
+// ///
+// public float StartScatteringRange = 0;
+// ///
+// /// 最终散射半径
+// ///
+// public float FinalScatteringRange = 20;
+// ///
+// /// 每次发射后散射增加值
+// ///
+// public float ScatteringRangeAddValue = 2;
+// ///
+// /// 松开扳机后散射销退速率
+// ///
+// public float ScatteringRangeBackSpeed = 10;
+// ///
+// /// 松开扳机多久后开始销退散射值
+// ///
+// public float ScatteringRangeBackTime = 0f;
+// ///
+// /// 子弹飞行最大距离
+// ///
+// public float MaxDistance = 600;
+// ///
+// /// 子弹飞行最小距离
+// ///
+// public float MinDistance = 800;
+// ///
+// /// 开火位置
+// ///
+// public Vector2 FirePosition = new Vector2(11, 0);
+// ///
+// /// 精灵位置
+// ///
+// public Vector2 SpritePosition = new Vector2(4, -3);
+// ///
+// /// 弹壳投抛起始位置
+// ///
+// public Vector2 ShellPosition = new Vector2(5, -2.5f);
+// ///
+// /// 重量
+// ///
+// public float Weight = 11;
+// ///
+// /// 最大后坐力 (仅用于开火后武器身抖动)
+// ///
+// public float MaxBacklash = 4;
+// ///
+// /// 最小后坐力 (仅用于开火后武器身抖动)
+// ///
+// public float MinBacklash = 2;
+// ///
+// /// 后坐力偏移回归回归速度
+// ///
+// public float BacklashRegressionSpeed = 35f;
+// ///
+// /// 开火后武器口上抬角度
+// ///
+// public float UpliftAngle = 30;
+// ///
+// /// 武器默认上抬角度
+// ///
+// public float DefaultAngle = 0;
+// ///
+// /// 开火后武器口角度恢复速度倍数
+// ///
+// public float UpliftAngleRestore = 1f;
+// ///
+// /// 默认射出的子弹
+// ///
+// public string BulletId = ActivityIdPrefix.Bullet + "0001";
+// ///
+// /// 武器精灵投抛时的旋转中心坐标
+// ///
+// public Vector2 ThrowSpritePosition = new Vector2(0, 0);
+// ///
+// /// 投抛状态下物体碰撞器大小
+// ///
+// public Vector2 ThrowCollisionSize = new Vector2(20, 15);
+//
+// ///
+// /// 克隆一份新的属性配置
+// ///
+// ///
+// public WeaponAttribute Clone()
+// {
+// var attr = _Clone();
+// if (AiUseAttribute != null)
+// {
+// attr.AiUseAttribute = AiUseAttribute._Clone();
+// }
+// return attr;
+// }
+//
+// private WeaponAttribute _Clone()
+// {
+// var attr = new WeaponAttribute();
+// attr.Name = Name;
+// attr.WeaponPrefab = WeaponPrefab;
+// attr.WeightType = WeightType;
+// attr.Icon = Icon;
+// attr.SpriteFrames = SpriteFrames;
+// attr.ContinuousShoot = ContinuousShoot;
+// attr.AmmoCapacity = AmmoCapacity;
+// attr.MaxAmmoCapacity = MaxAmmoCapacity;
+// attr.StandbyAmmoCapacity = StandbyAmmoCapacity;
+// attr.ReloadTime = ReloadTime;
+// attr.AloneReload = AloneReload;
+// attr.AloneReloadCount = AloneReloadCount;
+// attr.AloneReloadCanShoot = AloneReloadCanShoot;
+// attr.LooseShoot = LooseShoot;
+// attr.MinChargeTime = MinChargeTime;
+// attr.MinContinuousCount = MinContinuousCount;
+// attr.MaxContinuousCount = MaxContinuousCount;
+// attr.TriggerInterval = TriggerInterval;
+// attr.StartFiringSpeed = StartFiringSpeed;
+// attr.FinalFiringSpeed = FinalFiringSpeed;
+// attr.FiringSpeedAddSpeed = FiringSpeedAddSpeed;
+// attr.FiringSpeedBackSpeed = FiringSpeedBackSpeed;
+// attr.MinFireBulletCount = MinFireBulletCount;
+// attr.MaxFireBulletCount = MaxFireBulletCount;
+// attr.DelayedTime = DelayedTime;
+// attr.StartScatteringRange = StartScatteringRange;
+// attr.FinalScatteringRange = FinalScatteringRange;
+// attr.ScatteringRangeAddValue = ScatteringRangeAddValue;
+// attr.ScatteringRangeBackSpeed = ScatteringRangeBackSpeed;
+// attr.ScatteringRangeBackTime = ScatteringRangeBackTime;
+// attr.MaxDistance = MaxDistance;
+// attr.MinDistance = MinDistance;
+// attr.FirePosition = FirePosition;
+// attr.ShellPosition = ShellPosition;
+// attr.SpritePosition = SpritePosition;
+// attr.Weight = Weight;
+// attr.MaxBacklash = MaxBacklash;
+// attr.MinBacklash = MinBacklash;
+// attr.BacklashRegressionSpeed = BacklashRegressionSpeed;
+// attr.UpliftAngle = UpliftAngle;
+// attr.DefaultAngle = DefaultAngle;
+// attr.UpliftAngleRestore = UpliftAngleRestore;
+// attr.AiTargetLockingTime = AiTargetLockingTime;
+// attr.BulletId = BulletId;
+// attr.ThrowSpritePosition = ThrowSpritePosition;
+// attr.ThrowCollisionSize = ThrowCollisionSize;
+// return attr;
+// }
+//
+// //------------------------------ Ai相关 -----------------------------
+//
+// ///
+// /// 用于Ai, 目标锁定时间, 也就是瞄准目标多久才会开火
+// ///
+// public float AiTargetLockingTime = 0;
+//
+// ///
+// /// 用于Ai, Ai使用该武器发射的子弹速度缩放比
+// ///
+// public float AiBulletSpeedScale = 0.7f;
+//
+// ///
+// /// 用于Ai, Ai使用该武器消耗弹药的概率, (0 - 1)
+// ///
+// public float AiAmmoConsumptionProbability = 0f;
+//
+// ///
+// /// Ai 使用该武器时的武器数据, 设置该字段, 可让同一把武器在敌人和玩家手上有不同属性
+// ///
+// public WeaponAttribute AiUseAttribute;
+// }
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/item/weapon/gun/Gun.cs b/DungeonShooting_Godot/src/game/item/weapon/gun/Gun.cs
index 02a4733..4267f78 100644
--- a/DungeonShooting_Godot/src/game/item/weapon/gun/Gun.cs
+++ b/DungeonShooting_Godot/src/game/item/weapon/gun/Gun.cs
@@ -6,157 +6,157 @@
[Tool, GlobalClass]
public partial class Gun : Weapon
{
- //步枪属性数据
- private class RifleAttribute : WeaponAttribute
- {
- public RifleAttribute()
- {
- Name = "步枪";
- Icon = ResourcePath.resource_sprite_gun_gun4_png;
- SpriteFrames = ResourcePath.resource_spriteFrames_Weapon0001_tres;
- Weight = 40;
- ThrowSpritePosition = new Vector2(0.4f, -2.6f);
- StartFiringSpeed = 480;
- StartScatteringRange = 30;
- FinalScatteringRange = 90;
- ScatteringRangeAddValue = 2f;
- ScatteringRangeBackSpeed = 40;
- //连发
- ContinuousShoot = true;
- AmmoCapacity = 30;
- StandbyAmmoCapacity = 30 * 3;
- MaxAmmoCapacity = 30 * 3;
- //扳机检测间隔
- TriggerInterval = 0f;
-
- //开火前延时
- DelayedTime = 0f;
- //攻击距离
- MinDistance = 300;
- MaxDistance = 400;
- //发射子弹数量
- MinFireBulletCount = 1;
- MaxFireBulletCount = 1;
- //抬起角度
- UpliftAngle = 10;
- //开火位置
- FirePosition = new Vector2(21, -3f);
- //精灵位置
- SpritePosition = new Vector2(6, -1);
- ShellPosition = new Vector2(7.5f, -4.5f);
-
- AiUseAttribute = Clone();
- AiUseAttribute.AiTargetLockingTime = 0.5f;
- AiUseAttribute.TriggerInterval = 3f;
- AiUseAttribute.ContinuousShoot = false;
- AiUseAttribute.MinContinuousCount = 3;
- AiUseAttribute.MaxContinuousCount = 3;
- }
- }
-
- //手枪属性数据
- private class PistolAttribute : WeaponAttribute
- {
- public PistolAttribute()
- {
- Name = "手枪";
- Icon = ResourcePath.resource_sprite_gun_gun3_png;
- SpriteFrames = ResourcePath.resource_spriteFrames_Weapon0003_tres;
- Weight = 20;
- ThrowSpritePosition = new Vector2(0.4f, -2.6f);
- WeightType = WeaponWeightType.DeputyWeapon;
- StartFiringSpeed = 300;
- FinalFiringSpeed = 300;
- StartScatteringRange = 5;
- FinalScatteringRange = 60;
- ScatteringRangeAddValue = 8f;
- ScatteringRangeBackSpeed = 40;
- ScatteringRangeBackTime = 0.5f;
- //连发
- ContinuousShoot = false;
- AmmoCapacity = 12;
- StandbyAmmoCapacity = 72;
- MaxAmmoCapacity = 72;
- //扳机检测间隔
- TriggerInterval = 0.1f;
- //连发数量
- MinContinuousCount = 1;
- MaxContinuousCount = 1;
- //开火前延时
- DelayedTime = 0f;
- //攻击距离
- MinDistance = 250;
- MaxDistance = 300;
- //发射子弹数量
- MinFireBulletCount = 1;
- MaxFireBulletCount = 1;
- //抬起角度
- UpliftAngle = 20;
- //开火位置
- FirePosition = new Vector2(13, -2);
- //精灵位置
- SpritePosition = new Vector2(5, 0);
- ShellPosition = new Vector2(5, -3);
-
- AiUseAttribute = Clone();
- AiUseAttribute.AiTargetLockingTime = 1f;
- AiUseAttribute.TriggerInterval = 2f;
- }
- }
-
- //狙击步枪
- private class SniperRifleAttribute : WeaponAttribute
- {
- public SniperRifleAttribute()
- {
- Name = "狙击步枪";
- Icon = ResourcePath.resource_sprite_gun_gun3_png;
- SpriteFrames = ResourcePath.resource_spriteFrames_Weapon0005_tres;
- Weight = 20;
- ThrowSpritePosition = new Vector2(0.4f, -2.6f);
- WeightType = WeaponWeightType.DeputyWeapon;
- StartFiringSpeed = 60;
- FinalFiringSpeed = 60;
- StartScatteringRange = 0;
- FinalScatteringRange = 20;
- ScatteringRangeAddValue = 10;
- ScatteringRangeBackSpeed = 10;
- //连发
- ContinuousShoot = false;
- AmmoCapacity = 10;
- StandbyAmmoCapacity = 50;
- MaxAmmoCapacity = 50;
- //扳机检测间隔
- TriggerInterval = 0.1f;
- //连发数量
- MinContinuousCount = 1;
- MaxContinuousCount = 1;
- //开火前延时
- DelayedTime = 0f;
- //攻击距离
- MinDistance = 600;
- MaxDistance = 800;
- //发射子弹数量
- MinFireBulletCount = 1;
- MaxFireBulletCount = 1;
- //抬起角度
- UpliftAngle = 15;
- UpliftAngleRestore = 3.5f;
- //开火位置
- FirePosition = new Vector2(28, -3.5f);
- //精灵位置
- SpritePosition = new Vector2(9, 0);
- ShellPosition = new Vector2(7, -3.5f);
- MinBacklash = 6;
- MinBacklash = 8;
- BacklashRegressionSpeed = 20;
- ReloadTime = 3.5f;
-
- AiUseAttribute = Clone();
- AiUseAttribute.AiTargetLockingTime = 1f;
- AiUseAttribute.TriggerInterval = 2f;
- }
- }
+ // //步枪属性数据
+ // private class RifleAttribute : WeaponAttribute
+ // {
+ // public RifleAttribute()
+ // {
+ // Name = "步枪";
+ // Icon = ResourcePath.resource_sprite_gun_gun4_png;
+ // SpriteFrames = ResourcePath.resource_spriteFrames_Weapon0001_tres;
+ // Weight = 40;
+ // ThrowSpritePosition = new Vector2(0.4f, -2.6f);
+ // StartFiringSpeed = 480;
+ // StartScatteringRange = 30;
+ // FinalScatteringRange = 90;
+ // ScatteringRangeAddValue = 2f;
+ // ScatteringRangeBackSpeed = 40;
+ // //连发
+ // ContinuousShoot = true;
+ // AmmoCapacity = 30;
+ // StandbyAmmoCapacity = 30 * 3;
+ // MaxAmmoCapacity = 30 * 3;
+ // //扳机检测间隔
+ // TriggerInterval = 0f;
+ //
+ // //开火前延时
+ // DelayedTime = 0f;
+ // //攻击距离
+ // MinDistance = 300;
+ // MaxDistance = 400;
+ // //发射子弹数量
+ // MinFireBulletCount = 1;
+ // MaxFireBulletCount = 1;
+ // //抬起角度
+ // UpliftAngle = 10;
+ // //开火位置
+ // FirePosition = new Vector2(21, -3f);
+ // //精灵位置
+ // SpritePosition = new Vector2(6, -1);
+ // ShellPosition = new Vector2(7.5f, -4.5f);
+ //
+ // AiUseAttribute = Clone();
+ // AiUseAttribute.AiTargetLockingTime = 0.5f;
+ // AiUseAttribute.TriggerInterval = 3f;
+ // AiUseAttribute.ContinuousShoot = false;
+ // AiUseAttribute.MinContinuousCount = 3;
+ // AiUseAttribute.MaxContinuousCount = 3;
+ // }
+ // }
+ //
+ // //手枪属性数据
+ // private class PistolAttribute : WeaponAttribute
+ // {
+ // public PistolAttribute()
+ // {
+ // Name = "手枪";
+ // Icon = ResourcePath.resource_sprite_gun_gun3_png;
+ // SpriteFrames = ResourcePath.resource_spriteFrames_Weapon0003_tres;
+ // Weight = 20;
+ // ThrowSpritePosition = new Vector2(0.4f, -2.6f);
+ // WeightType = WeaponWeightType.DeputyWeapon;
+ // StartFiringSpeed = 300;
+ // FinalFiringSpeed = 300;
+ // StartScatteringRange = 5;
+ // FinalScatteringRange = 60;
+ // ScatteringRangeAddValue = 8f;
+ // ScatteringRangeBackSpeed = 40;
+ // ScatteringRangeBackTime = 0.5f;
+ // //连发
+ // ContinuousShoot = false;
+ // AmmoCapacity = 12;
+ // StandbyAmmoCapacity = 72;
+ // MaxAmmoCapacity = 72;
+ // //扳机检测间隔
+ // TriggerInterval = 0.1f;
+ // //连发数量
+ // MinContinuousCount = 1;
+ // MaxContinuousCount = 1;
+ // //开火前延时
+ // DelayedTime = 0f;
+ // //攻击距离
+ // MinDistance = 250;
+ // MaxDistance = 300;
+ // //发射子弹数量
+ // MinFireBulletCount = 1;
+ // MaxFireBulletCount = 1;
+ // //抬起角度
+ // UpliftAngle = 20;
+ // //开火位置
+ // FirePosition = new Vector2(13, -2);
+ // //精灵位置
+ // SpritePosition = new Vector2(5, 0);
+ // ShellPosition = new Vector2(5, -3);
+ //
+ // AiUseAttribute = Clone();
+ // AiUseAttribute.AiTargetLockingTime = 1f;
+ // AiUseAttribute.TriggerInterval = 2f;
+ // }
+ // }
+ //
+ // //狙击步枪
+ // private class SniperRifleAttribute : WeaponAttribute
+ // {
+ // public SniperRifleAttribute()
+ // {
+ // Name = "狙击步枪";
+ // Icon = ResourcePath.resource_sprite_gun_gun3_png;
+ // SpriteFrames = ResourcePath.resource_spriteFrames_Weapon0005_tres;
+ // Weight = 20;
+ // ThrowSpritePosition = new Vector2(0.4f, -2.6f);
+ // WeightType = WeaponWeightType.DeputyWeapon;
+ // StartFiringSpeed = 60;
+ // FinalFiringSpeed = 60;
+ // StartScatteringRange = 0;
+ // FinalScatteringRange = 20;
+ // ScatteringRangeAddValue = 10;
+ // ScatteringRangeBackSpeed = 10;
+ // //连发
+ // ContinuousShoot = false;
+ // AmmoCapacity = 10;
+ // StandbyAmmoCapacity = 50;
+ // MaxAmmoCapacity = 50;
+ // //扳机检测间隔
+ // TriggerInterval = 0.1f;
+ // //连发数量
+ // MinContinuousCount = 1;
+ // MaxContinuousCount = 1;
+ // //开火前延时
+ // DelayedTime = 0f;
+ // //攻击距离
+ // MinDistance = 600;
+ // MaxDistance = 800;
+ // //发射子弹数量
+ // MinFireBulletCount = 1;
+ // MaxFireBulletCount = 1;
+ // //抬起角度
+ // UpliftAngle = 15;
+ // UpliftAngleRestore = 3.5f;
+ // //开火位置
+ // FirePosition = new Vector2(28, -3.5f);
+ // //精灵位置
+ // SpritePosition = new Vector2(9, 0);
+ // ShellPosition = new Vector2(7, -3.5f);
+ // MinBacklash = 6;
+ // MinBacklash = 8;
+ // BacklashRegressionSpeed = 20;
+ // ReloadTime = 3.5f;
+ //
+ // AiUseAttribute = Clone();
+ // AiUseAttribute.AiTargetLockingTime = 1f;
+ // AiUseAttribute.TriggerInterval = 2f;
+ // }
+ // }
protected override void OnFire()
{
diff --git a/DungeonShooting_Godot/src/game/item/weapon/gun/Shotgun.cs b/DungeonShooting_Godot/src/game/item/weapon/gun/Shotgun.cs
index f256ecf..4490496 100644
--- a/DungeonShooting_Godot/src/game/item/weapon/gun/Shotgun.cs
+++ b/DungeonShooting_Godot/src/game/item/weapon/gun/Shotgun.cs
@@ -4,56 +4,56 @@
public partial class Shotgun : Weapon
{
- private class ShotgunAttribute : WeaponAttribute
- {
- public ShotgunAttribute()
- {
- Name = "霰弹枪";
- Icon = ResourcePath.resource_sprite_gun_gun2_png;
- SpriteFrames = ResourcePath.resource_spriteFrames_Weapon0002_tres;
- Weight = 40;
- ThrowSpritePosition = new Vector2(0.4f, -2.6f);
- StartFiringSpeed = 400;
- StartScatteringRange = 30;
- FinalScatteringRange = 90;
- ScatteringRangeAddValue = 50f;
- ScatteringRangeBackSpeed = 50;
- //连发
- ContinuousShoot = false;
- AmmoCapacity = 7;
- StandbyAmmoCapacity = 42;
- MaxAmmoCapacity = 42;
- AloneReload = true;
- AloneReloadCanShoot = true;
- ReloadTime = 0.6f;
- //连发数量
- MinContinuousCount = 1;
- MaxContinuousCount = 1;
- //开火前延时
- DelayedTime = 0f;
- //攻击距离
- MinDistance = 200;
- MaxDistance = 250;
- //发射子弹数量
- MinFireBulletCount = 5;
- MaxFireBulletCount = 5;
- //抬起角度
- UpliftAngle = 15;
- MaxBacklash = 6;
- MinBacklash = 5;
- //开火位置
- FirePosition = new Vector2(22, -4);
- //精灵位置
- SpritePosition = new Vector2(9, -2);
- ShellPosition = new Vector2(3, -4);
-
- BulletId = ActivityIdPrefix.Bullet + "0002";
-
- AiUseAttribute = Clone();
- AiUseAttribute.AiTargetLockingTime = 0.2f;
- AiUseAttribute.TriggerInterval = 3.5f;
- }
- }
+ // private class ShotgunAttribute : WeaponAttribute
+ // {
+ // public ShotgunAttribute()
+ // {
+ // Name = "霰弹枪";
+ // Icon = ResourcePath.resource_sprite_gun_gun2_png;
+ // SpriteFrames = ResourcePath.resource_spriteFrames_Weapon0002_tres;
+ // Weight = 40;
+ // ThrowSpritePosition = new Vector2(0.4f, -2.6f);
+ // StartFiringSpeed = 400;
+ // StartScatteringRange = 30;
+ // FinalScatteringRange = 90;
+ // ScatteringRangeAddValue = 50f;
+ // ScatteringRangeBackSpeed = 50;
+ // //连发
+ // ContinuousShoot = false;
+ // AmmoCapacity = 7;
+ // StandbyAmmoCapacity = 42;
+ // MaxAmmoCapacity = 42;
+ // AloneReload = true;
+ // AloneReloadCanShoot = true;
+ // ReloadTime = 0.6f;
+ // //连发数量
+ // MinContinuousCount = 1;
+ // MaxContinuousCount = 1;
+ // //开火前延时
+ // DelayedTime = 0f;
+ // //攻击距离
+ // MinDistance = 200;
+ // MaxDistance = 250;
+ // //发射子弹数量
+ // MinFireBulletCount = 5;
+ // MaxFireBulletCount = 5;
+ // //抬起角度
+ // UpliftAngle = 15;
+ // MaxBacklash = 6;
+ // MinBacklash = 5;
+ // //开火位置
+ // FirePosition = new Vector2(22, -4);
+ // //精灵位置
+ // SpritePosition = new Vector2(9, -2);
+ // ShellPosition = new Vector2(3, -4);
+ //
+ // BulletId = ActivityIdPrefix.Bullet + "0002";
+ //
+ // AiUseAttribute = Clone();
+ // AiUseAttribute.AiTargetLockingTime = 0.2f;
+ // AiUseAttribute.TriggerInterval = 3.5f;
+ // }
+ // }
///
/// 弹壳预制体
diff --git a/DungeonShooting_Godot/src/game/item/weapon/knife/Knife.cs b/DungeonShooting_Godot/src/game/item/weapon/knife/Knife.cs
index 82f5b95..4912170 100644
--- a/DungeonShooting_Godot/src/game/item/weapon/knife/Knife.cs
+++ b/DungeonShooting_Godot/src/game/item/weapon/knife/Knife.cs
@@ -4,35 +4,35 @@
[Tool, GlobalClass]
public partial class Knife : Weapon
{
- private class KnifeAttribute : WeaponAttribute
- {
- public KnifeAttribute()
- {
- Icon = ResourcePath.resource_sprite_gun_knife1_png;
- WeaponPrefab = ResourcePath.prefab_weapon_Knife_tscn;
- //攻速设置
- StartFiringSpeed = 180;
- FinalFiringSpeed = StartFiringSpeed;
- //关闭连发
- ContinuousShoot = false;
- //设置成松发开火
- LooseShoot = true;
- //弹药量, 可以理解为耐久度
- AmmoCapacity = 180;
- MaxAmmoCapacity = AmmoCapacity;
- //握把位置
- SpritePosition = new Vector2(10, 0);
- MaxDistance = MinDistance = 35;
- //后坐力改为向前, 模拟手伸长的效果
- MaxBacklash = -8;
- MinBacklash = -8;
- BacklashRegressionSpeed = 24;
- UpliftAngle = -95;
-
- //AiUseAttribute = Clone();
- //AiUseAttribute.TriggerInterval = 3f;
- }
- }
+ // private class KnifeAttribute : WeaponAttribute
+ // {
+ // public KnifeAttribute()
+ // {
+ // Icon = ResourcePath.resource_sprite_gun_knife1_png;
+ // WeaponPrefab = ResourcePath.prefab_weapon_Knife_tscn;
+ // //攻速设置
+ // StartFiringSpeed = 180;
+ // FinalFiringSpeed = StartFiringSpeed;
+ // //关闭连发
+ // ContinuousShoot = false;
+ // //设置成松发开火
+ // LooseShoot = true;
+ // //弹药量, 可以理解为耐久度
+ // AmmoCapacity = 180;
+ // MaxAmmoCapacity = AmmoCapacity;
+ // //握把位置
+ // SpritePosition = new Vector2(10, 0);
+ // MaxDistance = MinDistance = 35;
+ // //后坐力改为向前, 模拟手伸长的效果
+ // MaxBacklash = -8;
+ // MinBacklash = -8;
+ // BacklashRegressionSpeed = 24;
+ // UpliftAngle = -95;
+ //
+ // //AiUseAttribute = Clone();
+ // //AiUseAttribute.TriggerInterval = 3f;
+ // }
+ // }
private Area2D _hitArea;
private int _attackIndex = 0;
diff --git a/DungeonShooting_Godot/src/game/role/MountRotation.cs b/DungeonShooting_Godot/src/game/role/MountRotation.cs
index 4b4dacb..e265b10 100644
--- a/DungeonShooting_Godot/src/game/role/MountRotation.cs
+++ b/DungeonShooting_Godot/src/game/role/MountRotation.cs
@@ -4,6 +4,7 @@
///
/// 用于限定 Marker2D 节点的旋转角度
///
+[Tool]
public partial class MountRotation : Marker2D
{
///
diff --git a/DungeonShooting_Godot/src/game/role/Role.cs b/DungeonShooting_Godot/src/game/role/Role.cs
index c248950..0698454 100644
--- a/DungeonShooting_Godot/src/game/role/Role.cs
+++ b/DungeonShooting_Godot/src/game/role/Role.cs
@@ -443,7 +443,7 @@
return;
}
- var temp = weapon.Attribute.SpritePosition;
+ var temp = weapon.AnimatedSprite.Position;
if (Face == FaceDirection.Left)
{
temp.Y = -temp.Y;
@@ -451,7 +451,7 @@
var pos = GlobalPosition + temp.Rotated(weapon.GlobalRotation);
Holster.RemoveWeapon(index);
//播放抛出效果
- weapon.ThrowWeapon(this, pos);
+ weapon.ThrowWeapon(this, GlobalPosition);
}
///
diff --git a/DungeonShooting_Godot/src/game/room/DungeonManager.cs b/DungeonShooting_Godot/src/game/room/DungeonManager.cs
index 4be4fd2..a719a8d 100644
--- a/DungeonShooting_Godot/src/game/room/DungeonManager.cs
+++ b/DungeonShooting_Godot/src/game/room/DungeonManager.cs
@@ -3,6 +3,7 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
+using Config;
using Godot;
///
@@ -137,7 +138,7 @@
//初始房间创建玩家标记
var playerBirthMark = StartRoom.ActivityMarks.FirstOrDefault(mark => mark.Type == ActivityIdPrefix.ActivityPrefixType.Player);
//创建玩家
- var player = ActivityObject.Create(ActivityIdPrefix.Role + "0001");
+ var player = ActivityObject.Create(ActivityObject.Ids.Id_role0001);
if (playerBirthMark != null)
{
//player.Position = new Vector2(50, 50);
@@ -147,9 +148,11 @@
Player.SetCurrentPlayer(player);
player.PutDown(RoomLayerEnum.YSortLayer);
//玩家手上添加武器
- // player.PickUpWeapon(ActivityObject.Create(ActivityIdPrefix.Weapon + "0001"));
- // player.PickUpWeapon(ActivityObject.Create(ActivityIdPrefix.Weapon + "0002"));
-
+ //player.PickUpWeapon(ActivityObject.Create(ActivityObject.Ids.Id_weapon0001));
+ var weapon = ActivityObject.Create(ActivityObject.Ids.Id_weapon0001);
+ weapon.InitWeapon(ExcelConfig.Weapon_List[0]);
+ weapon.PutDown(player.Position, RoomLayerEnum.NormalLayer);
+
GameApplication.Instance.Cursor.SetGuiMode(false);
yield return 0;
@@ -256,22 +259,22 @@
switch (doorInfo.Direction)
{
case DoorDirection.E:
- door = ActivityObject.Create(ActivityIdPrefix.Other + "_door_e");
+ door = ActivityObject.Create(ActivityObject.Ids.Id_other_door_e);
door.Position = (doorInfo.OriginPosition + new Vector2(0.5f, 2)) * GameConfig.TileCellSize;
door.ZIndex = GameConfig.TopMapLayer;
break;
case DoorDirection.W:
- door = ActivityObject.Create(ActivityIdPrefix.Other + "_door_w");
+ door = ActivityObject.Create(ActivityObject.Ids.Id_other_door_w);
door.Position = (doorInfo.OriginPosition + new Vector2(-0.5f, 2)) * GameConfig.TileCellSize;
door.ZIndex = GameConfig.TopMapLayer;
break;
case DoorDirection.S:
- door = ActivityObject.Create(ActivityIdPrefix.Other + "_door_s");
+ door = ActivityObject.Create(ActivityObject.Ids.Id_other_door_s);
door.Position = (doorInfo.OriginPosition + new Vector2(2f, 1.5f)) * GameConfig.TileCellSize;
door.ZIndex = GameConfig.TopMapLayer;
break;
case DoorDirection.N:
- door = ActivityObject.Create(ActivityIdPrefix.Other + "_door_n");
+ door = ActivityObject.Create(ActivityObject.Ids.Id_other_door_n);
door.Position = (doorInfo.OriginPosition + new Vector2(2f, -0.5f)) * GameConfig.TileCellSize;
door.ZIndex = GameConfig.MiddleMapLayer;
break;