diff --git a/DungeonShooting_Godot/excel/excelFile/ActivityObject.xlsx b/DungeonShooting_Godot/excel/excelFile/ActivityObject.xlsx
index 665ce59..f322a2c 100644
--- a/DungeonShooting_Godot/excel/excelFile/ActivityObject.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/ActivityObject.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/excelFile/Sound.xlsx b/DungeonShooting_Godot/excel/excelFile/Sound.xlsx
index 536a847..8d51f17 100644
--- a/DungeonShooting_Godot/excel/excelFile/Sound.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/Sound.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/excelFile/Weapon.xlsx b/DungeonShooting_Godot/excel/excelFile/Weapon.xlsx
index 877be50..1dc152e 100644
--- a/DungeonShooting_Godot/excel/excelFile/Weapon.xlsx
+++ b/DungeonShooting_Godot/excel/excelFile/Weapon.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/export_presets.cfg b/DungeonShooting_Godot/export_presets.cfg
index 2c44c63..8683c0c 100644
--- a/DungeonShooting_Godot/export_presets.cfg
+++ b/DungeonShooting_Godot/export_presets.cfg
@@ -211,8 +211,8 @@
custom_features=""
export_filter="all_resources"
include_filter=""
-exclude_filter=""
-export_path="../../DungeonShooting_Export/windows/build.exe"
+exclude_filter="resource/map/tileMaps/*"
+export_path="../../DungeonShooting_Export/windows/game.exe"
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
diff --git a/DungeonShooting_Godot/prefab/bullet/Bullet0001.tscn b/DungeonShooting_Godot/prefab/bullet/Bullet0001.tscn
index 216cd74..a1f4b70 100644
--- a/DungeonShooting_Godot/prefab/bullet/Bullet0001.tscn
+++ b/DungeonShooting_Godot/prefab/bullet/Bullet0001.tscn
@@ -36,7 +36,7 @@
}]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_lcqb8"]
-size = Vector2(11, 4)
+size = Vector2(9, 4)
[node name="Bullet0001" type="CharacterBody2D" node_paths=PackedStringArray("CollisionArea", "ShadowSprite", "AnimatedSprite", "Collision")]
collision_layer = 2
@@ -66,5 +66,5 @@
shape = SubResource("RectangleShape2D_lcqb8")
[node name="Collision" type="CollisionShape2D" parent="."]
-position = Vector2(2.5, 0)
+position = Vector2(1.5, 0)
shape = SubResource("RectangleShape2D_lcqb8")
diff --git a/DungeonShooting_Godot/prefab/bullet/Bullet0003.tscn b/DungeonShooting_Godot/prefab/bullet/Bullet0003.tscn
index 02a9502..18fab3e 100644
--- a/DungeonShooting_Godot/prefab/bullet/Bullet0003.tscn
+++ b/DungeonShooting_Godot/prefab/bullet/Bullet0003.tscn
@@ -55,5 +55,4 @@
shape = SubResource("RectangleShape2D_c0onq")
[node name="Collision" type="CollisionShape2D" parent="."]
-position = Vector2(1, 0)
shape = SubResource("RectangleShape2D_c0onq")
diff --git a/DungeonShooting_Godot/prefab/role/Role0001.tscn b/DungeonShooting_Godot/prefab/role/Role0001.tscn
index 8ab23d6..4560a76 100644
--- a/DungeonShooting_Godot/prefab/role/Role0001.tscn
+++ b/DungeonShooting_Godot/prefab/role/Role0001.tscn
@@ -10,7 +10,7 @@
shader = ExtResource("3_rk4gg")
shader_parameter/blend = Color(0, 0, 0, 0.470588)
shader_parameter/schedule = 1.0
-shader_parameter/alpha = 1.0
+shader_parameter/modulate = Color(1, 1, 1, 1)
shader_parameter/show_outline = true
shader_parameter/outline_color = Color(0, 0, 0, 1)
shader_parameter/outline_rainbow = false
@@ -20,7 +20,7 @@
shader = ExtResource("3_rk4gg")
shader_parameter/blend = Color(1, 1, 1, 1)
shader_parameter/schedule = 0.0
-shader_parameter/alpha = 1.0
+shader_parameter/modulate = Color(1, 1, 1, 1)
shader_parameter/show_outline = true
shader_parameter/outline_color = Color(0, 0, 0, 1)
shader_parameter/outline_rainbow = false
@@ -44,4 +44,8 @@
sprite_frames = ExtResource("4_galcc")
frame_progress = 0.0995217
-[node name="MountPoint2" type="Marker2D" parent="." index="7"]
+[node name="CollisionShape2D" parent="HurtArea" index="0"]
+position = Vector2(0, -12)
+
+[node name="MountPoint" parent="." index="6"]
+position = Vector2(2, -8)
diff --git a/DungeonShooting_Godot/prefab/ui/BottomTips.tscn b/DungeonShooting_Godot/prefab/ui/BottomTips.tscn
index ddd6d50..7b4bf8a 100644
--- a/DungeonShooting_Godot/prefab/ui/BottomTips.tscn
+++ b/DungeonShooting_Godot/prefab/ui/BottomTips.tscn
@@ -18,7 +18,6 @@
mouse_filter = 2
script = ExtResource("1_c63vs")
Layer = 3
-Mode = 1
metadata/_edit_vertical_guides_ = [960.0]
[node name="Panel" type="PanelContainer" parent="."]
diff --git a/DungeonShooting_Godot/resource/config/ActivityObject.json b/DungeonShooting_Godot/resource/config/ActivityObject.json
index 85aa85b..d66af1d 100644
--- a/DungeonShooting_Godot/resource/config/ActivityObject.json
+++ b/DungeonShooting_Godot/resource/config/ActivityObject.json
@@ -16,7 +16,7 @@
"Intro": "\u654C\u4EBA",
"Details": "",
"Prefab": "res://prefab/role/Enemy0001.tscn",
- "Icon": "res://resource/sprite/role/enemy0001/Enemy0001_Icon.png",
+ "Icon": "res://resource/sprite/role/enemy0001/enemy0001_Icon.png",
"ShowInMapEditor": true
},
{
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle1/Preinstall.json b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle1/Preinstall.json
index 67fa184..4ebcc0d 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle1/Preinstall.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle1/Preinstall.json
@@ -1 +1 @@
-[{"Name":"test1","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":-4,"Y":-6},"Size":{"X":30,"Y":26},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0002","CurrAmmon":"7","ResidueAmmo":"7"},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":38,"Y":48},"Size":{"X":31,"Y":25},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0002","CurrAmmon":"7","ResidueAmmo":"7"},"Altitude":0,"VerticalSpeed":0}]}],[{"Position":{"X":38,"Y":-3},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0007","CurrAmmon":"60","ResidueAmmo":"60"},"Altitude":0,"VerticalSpeed":0}]}],[{"Position":{"X":-9,"Y":38},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0007","CurrAmmon":"60","ResidueAmmo":"60"},"Altitude":0,"VerticalSpeed":0}]}]]}]
\ No newline at end of file
+[{"Name":"test1","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":-4,"Y":-6},"Size":{"X":30,"Y":26},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0002","CurrAmmon":"7","ResidueAmmo":"7"},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":38,"Y":48},"Size":{"X":31,"Y":25},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0002","CurrAmmon":"7","ResidueAmmo":"7"},"Altitude":0,"VerticalSpeed":0}]}],[{"Position":{"X":38,"Y":-3},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0007","CurrAmmon":"60","ResidueAmmo":"60"},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":103,"Y":13},"Size":{"X":105,"Y":36},"SpecialMarkType":0,"DelayTime":1,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0007","CurrAmmon":"60","ResidueAmmo":"60"},"Altitude":0,"VerticalSpeed":0}]}],[{"Position":{"X":-9,"Y":38},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0007","CurrAmmon":"60","ResidueAmmo":"60"},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":17,"Y":78},"Size":{"X":26,"Y":66},"SpecialMarkType":0,"DelayTime":1.5,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0006","CurrAmmon":"20","ResidueAmmo":"20"},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":19,"Y":-48},"Size":{"X":16,"Y":63},"SpecialMarkType":0,"DelayTime":2,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0002","CurrAmmon":"7","ResidueAmmo":"7"},"Altitude":0,"VerticalSpeed":0}]}]]}]
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle1/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle1/Preview.png
index eb42965..f359ae7 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle1/Preview.png
+++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle1/Preview.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle1/TileInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle1/TileInfo.json
index 1d76fc5..309a41e 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle1/TileInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle1/TileInfo.json
@@ -1 +1 @@
-{"NavigationList":[{"Type":0,"Points":[-88,-88,120,-88,120,-8,168,-8,168,-88,184,-88,184,-72,232,-72,232,-16,184,-16,184,56,232,56,232,112,184,112,184,128,168,128,168,32,120,32,120,128,-88,128]},{"Type":1,"Points":[-72,-64,8,-64,8,-24,-24,-24,-24,8,-72,8]},{"Type":1,"Points":[24,-64,104,-64,104,8,56,8,56,-24,24,-24]},{"Type":1,"Points":[-72,32,-24,32,-24,64,8,64,8,104,-72,104]},{"Type":1,"Points":[56,32,104,32,104,104,24,104,24,64,56,64]}],"Floor":[10,-1,0,0,8,10,1,0,0,8,10,0,0,0,8,10,2,0,0,8,10,3,0,0,8,10,4,0,0,8,10,5,0,0,8,10,6,0,0,8,10,7,0,0,8,10,-6,0,0,8,10,-5,0,0,8,10,-4,0,0,8,10,-3,0,0,8,10,-2,0,0,8,9,1,0,0,8,9,0,0,0,8,9,-1,0,0,8,8,1,0,0,8,8,0,0,0,8,8,-1,0,0,8,-6,-6,0,0,8,-6,-5,0,0,8,-6,-4,0,0,8,-6,-3,0,0,8,-6,-2,0,0,8,-6,-1,0,0,8,-6,0,0,0,8,-6,1,0,0,8,-6,2,0,0,8,-6,3,0,0,8,-6,4,0,0,8,-6,5,0,0,8,-6,6,0,0,8,-6,7,0,0,8,-5,-6,0,0,8,-5,-5,0,0,8,-5,-4,0,0,8,-5,-3,0,0,8,-5,-2,0,0,8,-5,-1,0,0,8,-5,0,0,0,8,-5,1,0,0,8,-5,2,0,0,8,-5,3,0,0,8,-5,4,0,0,8,-5,5,0,0,8,-5,6,0,0,8,-5,7,0,0,8,-4,-6,0,0,8,-4,-5,0,0,8,-4,0,0,0,8,-4,1,0,0,8,-4,7,0,0,8,-4,6,0,0,8,-3,-6,0,0,8,-3,-5,0,0,8,-3,0,0,0,8,-3,1,0,0,8,-3,7,0,0,8,-3,6,0,0,8,-2,-6,0,0,8,-2,-5,0,0,8,-2,-2,0,0,8,-2,-1,0,0,8,-2,0,0,0,8,-2,1,0,0,8,-2,2,0,0,8,-2,3,0,0,8,-2,7,0,0,8,-2,6,0,0,8,-1,-6,0,0,8,-1,-5,0,0,8,-1,-2,0,0,8,-1,-1,0,0,8,-1,0,0,0,8,-1,1,0,0,8,-1,2,0,0,8,-1,3,0,0,8,-1,7,0,0,8,-1,6,0,0,8,0,-6,0,0,8,0,-5,0,0,8,0,-4,0,0,8,0,-3,0,0,8,0,-2,0,0,8,0,-1,0,0,8,0,2,0,0,8,0,3,0,0,8,0,4,0,0,8,0,5,0,0,8,0,6,0,0,8,0,7,0,0,8,0,0,0,0,8,0,1,0,0,8,1,-6,0,0,8,1,-5,0,0,8,1,-4,0,0,8,1,-3,0,0,8,1,-2,0,0,8,1,-1,0,0,8,1,2,0,0,8,1,3,0,0,8,1,4,0,0,8,1,5,0,0,8,1,6,0,0,8,1,7,0,0,8,1,1,0,0,8,1,0,0,0,8,2,-6,0,0,8,2,-5,0,0,8,2,-2,0,0,8,2,-1,0,0,8,2,0,0,0,8,2,1,0,0,8,2,2,0,0,8,2,3,0,0,8,2,7,0,0,8,2,6,0,0,8,3,-6,0,0,8,3,-5,0,0,8,3,-2,0,0,8,3,-1,0,0,8,3,0,0,0,8,3,1,0,0,8,3,2,0,0,8,3,3,0,0,8,3,7,0,0,8,3,6,0,0,8,4,-6,0,0,8,4,-5,0,0,8,4,0,0,0,8,4,1,0,0,8,4,7,0,0,8,4,6,0,0,8,5,-6,0,0,8,5,-5,0,0,8,5,0,0,0,8,5,1,0,0,8,5,7,0,0,8,5,6,0,0,8,6,-6,0,0,8,6,-5,0,0,8,6,-4,0,0,8,6,-3,0,0,8,6,-2,0,0,8,6,-1,0,0,8,6,0,0,0,8,6,1,0,0,8,6,2,0,0,8,6,3,0,0,8,6,4,0,0,8,6,5,0,0,8,6,6,0,0,8,6,7,0,0,8,7,-6,0,0,8,7,-5,0,0,8,7,-4,0,0,8,7,-3,0,0,8,7,-2,0,0,8,7,-1,0,0,8,7,0,0,0,8,7,1,0,0,8,7,2,0,0,8,7,3,0,0,8,7,4,0,0,8,7,5,0,0,8,7,6,0,0,8,7,7,0,0,8,11,7,0,0,8,11,6,0,0,8,11,5,0,0,8,11,4,0,0,8,11,3,0,0,8,11,2,0,0,8,11,1,0,0,8,11,0,0,0,8,11,-1,0,0,8,11,-2,0,0,8,11,-3,0,0,8,11,-4,0,0,8,11,-5,0,0,8,11,-6,0,0,8,12,-2,0,0,8,12,-5,0,0,8,12,-3,0,0,8,12,-4,0,0,8,12,3,0,0,8,12,4,0,0,8,12,5,0,0,8,12,6,0,0,8,13,-2,0,0,8,13,-5,0,0,8,13,-4,0,0,8,13,-3,0,0,8,13,6,0,0,8,13,5,0,0,8,13,4,0,0,8,13,3,0,0,8,14,-2,0,0,8,14,-5,0,0,8,14,-4,0,0,8,14,-3,0,0,8,14,4,0,0,8,14,3,0,0,8,14,5,0,0,8,14,6,0,0,8],"Middle":[-6,-7,0,2,7,-5,-7,0,2,7,-4,-7,0,2,7,-4,-1,0,1,7,-4,5,0,1,7,-3,-7,0,2,7,-3,-1,0,3,7,-3,5,0,2,7,-2,-7,0,2,7,-2,-3,0,2,7,-2,5,0,2,7,-1,-7,0,2,7,-1,-3,0,3,7,-1,5,0,3,7,0,-7,0,2,7,1,-7,0,2,7,2,-7,0,2,7,2,-3,0,1,7,2,5,0,1,7,3,-7,0,2,7,3,-3,0,2,7,3,5,0,2,7,4,-7,0,2,7,4,-1,0,1,7,4,5,0,2,7,5,-7,0,2,7,5,-1,0,3,7,5,5,0,3,7,6,-7,0,2,7,7,-7,0,2,7,8,-2,0,1,7,9,-2,0,3,7,10,-7,0,2,7,11,-7,0,2,7,12,-6,0,1,7,12,2,0,1,7,13,-6,0,2,7,13,2,0,2,7,14,-6,0,2,7,14,2,0,2,7],"Top":[-7,-7,0,3,4,-7,-6,0,3,3,-7,-5,0,3,3,-7,-4,0,3,3,-7,-3,0,3,3,-7,-2,0,3,3,-7,-1,0,3,3,-7,0,0,3,3,-7,1,0,3,3,-7,2,0,3,3,-7,3,0,3,3,-7,4,0,3,3,-7,5,0,3,3,-7,6,0,3,3,-7,7,0,3,3,-7,8,0,11,2,-6,8,0,2,2,-5,8,0,2,2,-4,-4,0,1,2,-4,-3,0,1,3,-4,-2,0,1,3,-4,2,0,1,2,-4,3,0,1,3,-4,4,0,1,3,-4,8,0,2,2,-3,-4,0,2,2,-3,-3,0,3,4,-3,-2,0,3,3,-3,2,0,3,2,-3,3,0,3,3,-3,4,0,11,2,-3,8,0,2,2,-2,-4,0,2,2,-2,4,0,2,2,-2,8,0,2,2,-1,-4,0,3,2,-1,4,0,3,2,-1,8,0,2,2,0,8,0,2,2,1,8,0,2,2,2,-4,0,1,2,2,4,0,1,2,2,8,0,2,2,3,-4,0,2,2,3,4,0,2,2,3,8,0,2,2,4,-4,0,2,2,4,-3,0,1,4,4,-2,0,1,3,4,2,0,1,2,4,3,0,1,3,4,4,0,13,2,4,8,0,2,2,5,-4,0,3,2,5,-3,0,3,3,5,-2,0,3,3,5,2,0,3,2,5,3,0,3,3,5,4,0,3,3,5,8,0,2,2,6,8,0,2,2,7,8,0,2,2,8,-7,0,1,4,8,-6,0,1,3,8,-5,0,1,3,8,-4,0,1,3,8,-3,0,1,3,8,2,0,1,2,8,3,0,1,3,8,4,0,1,3,8,5,0,1,3,8,6,0,1,3,8,7,0,1,3,8,8,0,13,2,9,-7,0,3,4,9,-6,0,3,3,9,-5,0,3,3,9,-4,0,3,3,9,-3,0,3,3,9,2,0,3,2,9,3,0,3,3,9,4,0,3,3,9,5,0,3,3,9,6,0,3,3,9,7,0,3,3,9,8,0,11,2,10,8,0,2,2,11,8,0,2,2,12,-7,0,1,4,12,-1,0,1,2,12,0,0,1,3,12,1,0,1,3,12,7,0,1,2,12,8,0,13,2,13,-1,0,2,2,13,7,0,2,2,14,-1,0,2,2,14,7,0,2,2,15,-6,0,1,4,15,-5,0,1,3,15,-4,0,1,3,15,-3,0,1,3,15,-2,0,1,3,15,-1,0,13,2,15,2,0,1,4,15,3,0,1,3,15,4,0,1,3,15,5,0,1,3,15,6,0,1,3,15,7,0,13,2]}
\ No newline at end of file
+{"NavigationList":[{"Type":0,"Points":[-88,-88,120,-88,120,-24,168,-24,168,-88,184,-88,184,-72,232,-72,232,-16,184,-16,184,56,232,56,232,112,184,112,184,128,168,128,168,48,120,48,120,128,-88,128]},{"Type":1,"Points":[-72,-64,-8,-64,-8,-24,-24,-24,-24,-8,-72,-8]},{"Type":1,"Points":[40,-64,104,-64,104,-8,56,-8,56,-24,40,-24]},{"Type":1,"Points":[-72,48,-24,48,-24,64,-8,64,-8,104,-72,104]},{"Type":1,"Points":[56,48,104,48,104,104,40,104,40,64,56,64]}],"Floor":[14,6,0,0,8,14,5,0,0,8,14,3,0,0,8,14,4,0,0,8,14,-3,0,0,8,14,-4,0,0,8,14,-5,0,0,8,14,-2,0,0,8,13,3,0,0,8,13,4,0,0,8,13,5,0,0,8,13,6,0,0,8,13,-3,0,0,8,13,-4,0,0,8,13,-5,0,0,8,13,-2,0,0,8,12,6,0,0,8,12,5,0,0,8,12,4,0,0,8,12,3,0,0,8,12,-4,0,0,8,12,-3,0,0,8,12,-5,0,0,8,12,-2,0,0,8,11,-6,0,0,8,11,-5,0,0,8,11,-4,0,0,8,11,-3,0,0,8,11,-2,0,0,8,11,-1,0,0,8,11,0,0,0,8,11,1,0,0,8,11,2,0,0,8,11,3,0,0,8,11,4,0,0,8,11,5,0,0,8,11,6,0,0,8,11,7,0,0,8,7,7,0,0,8,7,6,0,0,8,7,5,0,0,8,7,4,0,0,8,7,3,0,0,8,7,2,0,0,8,7,1,0,0,8,7,0,0,0,8,7,-1,0,0,8,7,-2,0,0,8,7,-3,0,0,8,7,-4,0,0,8,7,-5,0,0,8,7,-6,0,0,8,6,7,0,0,8,6,6,0,0,8,6,5,0,0,8,6,4,0,0,8,6,3,0,0,8,6,2,0,0,8,6,1,0,0,8,6,0,0,0,8,6,-1,0,0,8,6,-2,0,0,8,6,-3,0,0,8,6,-4,0,0,8,6,-5,0,0,8,6,-6,0,0,8,5,2,0,0,8,5,-1,0,0,8,5,6,0,0,8,5,7,0,0,8,5,1,0,0,8,5,0,0,0,8,5,-5,0,0,8,5,-6,0,0,8,4,2,0,0,8,4,-1,0,0,8,4,6,0,0,8,4,7,0,0,8,4,1,0,0,8,4,0,0,0,8,4,-5,0,0,8,4,-6,0,0,8,3,6,0,0,8,3,7,0,0,8,3,3,0,0,8,3,2,0,0,8,3,1,0,0,8,3,0,0,0,8,3,-1,0,0,8,3,-2,0,0,8,3,-5,0,0,8,3,-6,0,0,8,2,5,0,0,8,2,4,0,0,8,2,-3,0,0,8,2,-4,0,0,8,2,6,0,0,8,2,7,0,0,8,2,3,0,0,8,2,2,0,0,8,2,1,0,0,8,2,0,0,0,8,2,-1,0,0,8,2,-2,0,0,8,2,-5,0,0,8,2,-6,0,0,8,1,0,0,0,8,1,1,0,0,8,1,7,0,0,8,1,6,0,0,8,1,5,0,0,8,1,4,0,0,8,1,3,0,0,8,1,2,0,0,8,1,-1,0,0,8,1,-2,0,0,8,1,-3,0,0,8,1,-4,0,0,8,1,-5,0,0,8,1,-6,0,0,8,0,1,0,0,8,0,0,0,0,8,0,7,0,0,8,0,6,0,0,8,0,5,0,0,8,0,4,0,0,8,0,3,0,0,8,0,2,0,0,8,0,-1,0,0,8,0,-2,0,0,8,0,-3,0,0,8,0,-4,0,0,8,0,-5,0,0,8,0,-6,0,0,8,-1,5,0,0,8,-1,4,0,0,8,-1,-3,0,0,8,-1,-4,0,0,8,-1,6,0,0,8,-1,7,0,0,8,-1,3,0,0,8,-1,2,0,0,8,-1,1,0,0,8,-1,0,0,0,8,-1,-1,0,0,8,-1,-2,0,0,8,-1,-5,0,0,8,-1,-6,0,0,8,-2,6,0,0,8,-2,7,0,0,8,-2,3,0,0,8,-2,2,0,0,8,-2,1,0,0,8,-2,0,0,0,8,-2,-1,0,0,8,-2,-2,0,0,8,-2,-5,0,0,8,-2,-6,0,0,8,-3,2,0,0,8,-3,-1,0,0,8,-3,6,0,0,8,-3,7,0,0,8,-3,1,0,0,8,-3,0,0,0,8,-3,-5,0,0,8,-3,-6,0,0,8,-4,2,0,0,8,-4,-1,0,0,8,-4,6,0,0,8,-4,7,0,0,8,-4,1,0,0,8,-4,0,0,0,8,-4,-5,0,0,8,-4,-6,0,0,8,-5,7,0,0,8,-5,6,0,0,8,-5,5,0,0,8,-5,4,0,0,8,-5,3,0,0,8,-5,2,0,0,8,-5,1,0,0,8,-5,0,0,0,8,-5,-1,0,0,8,-5,-2,0,0,8,-5,-3,0,0,8,-5,-4,0,0,8,-5,-5,0,0,8,-5,-6,0,0,8,-6,7,0,0,8,-6,6,0,0,8,-6,5,0,0,8,-6,4,0,0,8,-6,3,0,0,8,-6,2,0,0,8,-6,1,0,0,8,-6,0,0,0,8,-6,-1,0,0,8,-6,-2,0,0,8,-6,-3,0,0,8,-6,-4,0,0,8,-6,-5,0,0,8,-6,-6,0,0,8,8,-2,0,0,8,8,2,0,0,8,8,-1,0,0,8,8,0,0,0,8,8,1,0,0,8,9,-2,0,0,8,9,2,0,0,8,9,-1,0,0,8,9,0,0,0,8,9,1,0,0,8,10,-2,0,0,8,10,-3,0,0,8,10,-4,0,0,8,10,-5,0,0,8,10,-6,0,0,8,10,7,0,0,8,10,6,0,0,8,10,5,0,0,8,10,4,0,0,8,10,3,0,0,8,10,2,0,0,8,10,0,0,0,8,10,1,0,0,8,10,-1,0,0,8],"Middle":[-6,-7,0,2,7,-5,-7,0,2,7,-4,-7,0,2,7,-4,-2,0,1,7,-4,5,0,1,7,-3,-7,0,2,7,-3,-2,0,3,7,-3,5,0,2,7,-2,-7,0,2,7,-2,-3,0,3,7,-2,5,0,3,7,-1,-7,0,2,7,0,-7,0,2,7,1,-7,0,2,7,2,-7,0,2,7,3,-7,0,2,7,3,-3,0,1,7,3,5,0,1,7,4,-7,0,2,7,4,-2,0,1,7,4,5,0,2,7,5,-7,0,2,7,5,-2,0,3,7,5,5,0,3,7,6,-7,0,2,7,7,-7,0,2,7,8,-3,0,1,7,9,-3,0,3,7,10,-7,0,2,7,11,-7,0,2,7,12,-6,0,1,7,12,2,0,1,7,13,-6,0,2,7,13,2,0,2,7,14,-6,0,2,7,14,2,0,2,7],"Top":[-7,-7,0,3,4,-7,-6,0,3,3,-7,-5,0,3,3,-7,-4,0,3,3,-7,-3,0,3,3,-7,-2,0,3,3,-7,-1,0,3,3,-7,0,0,3,3,-7,1,0,3,3,-7,2,0,3,3,-7,3,0,3,3,-7,4,0,3,3,-7,5,0,3,3,-7,6,0,3,3,-7,7,0,3,3,-7,8,0,11,2,-6,8,0,2,2,-5,8,0,2,2,-4,-4,0,1,2,-4,-3,0,1,3,-4,3,0,1,2,-4,4,0,1,3,-4,8,0,2,2,-3,-4,0,2,2,-3,-3,0,3,4,-3,3,0,3,2,-3,4,0,11,2,-3,8,0,2,2,-2,-4,0,3,2,-2,4,0,3,2,-2,8,0,2,2,-1,8,0,2,2,0,8,0,2,2,1,8,0,2,2,2,8,0,2,2,3,-4,0,1,2,3,4,0,1,2,3,8,0,2,2,4,-4,0,2,2,4,-3,0,1,4,4,3,0,1,2,4,4,0,13,2,4,8,0,2,2,5,-4,0,3,2,5,-3,0,3,3,5,3,0,3,2,5,4,0,3,3,5,8,0,2,2,6,8,0,2,2,7,8,0,2,2,8,-7,0,1,4,8,-6,0,1,3,8,-5,0,1,3,8,-4,0,1,3,8,3,0,1,2,8,4,0,1,3,8,5,0,1,3,8,6,0,1,3,8,7,0,1,3,8,8,0,13,2,9,-7,0,3,4,9,-6,0,3,3,9,-5,0,3,3,9,-4,0,3,3,9,3,0,3,2,9,4,0,3,3,9,5,0,3,3,9,6,0,3,3,9,7,0,3,3,9,8,0,11,2,10,8,0,2,2,11,8,0,2,2,12,-7,0,1,4,12,-1,0,1,2,12,0,0,1,3,12,1,0,1,3,12,7,0,1,2,12,8,0,13,2,13,-1,0,2,2,13,7,0,2,2,14,-1,0,2,2,14,7,0,2,2,15,-6,0,1,4,15,-5,0,1,3,15,-4,0,1,3,15,-3,0,1,3,15,-2,0,1,3,15,-1,0,13,2,15,2,0,1,4,15,3,0,1,3,15,4,0,1,3,15,5,0,1,3,15,6,0,1,3,15,7,0,13,2]}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle2/Preinstall.json b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle2/Preinstall.json
index 1e5adb4..80edbe9 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle2/Preinstall.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle2/Preinstall.json
@@ -1 +1 @@
-[{"Name":"test1","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":178,"Y":-21},"Size":{"X":92,"Y":73},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0007","CurrAmmon":"60","ResidueAmmo":"60"},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":76,"Y":140},"Size":{"X":43,"Y":77},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]}],[{"Position":{"X":89,"Y":19},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]}],[{"Position":{"X":78,"Y":89},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]}]]}]
\ No newline at end of file
+[{"Name":"test1","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":178,"Y":-21},"Size":{"X":92,"Y":73},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0007","CurrAmmon":"60","ResidueAmmo":"60"},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":76,"Y":168},"Size":{"X":43,"Y":77},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]}],[{"Position":{"X":89,"Y":19},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":65,"Y":142},"Size":{"X":48,"Y":160},"SpecialMarkType":0,"DelayTime":0.5,"MarkList":[{"Id":"weapon0005","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"40"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":79,"Y":45},"Size":{"X":46,"Y":121},"SpecialMarkType":0,"DelayTime":0.5,"MarkList":[{"Id":"weapon0005","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"40"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":181,"Y":203},"Size":{"X":66,"Y":33},"SpecialMarkType":0,"DelayTime":1,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":-19,"Y":100},"Size":{"X":97,"Y":63},"SpecialMarkType":0,"DelayTime":1.5,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":117,"Y":-14},"Size":{"X":122,"Y":78},"SpecialMarkType":0,"DelayTime":2,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]}],[{"Position":{"X":78,"Y":89},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":-79,"Y":15},"Size":{"X":30,"Y":140},"SpecialMarkType":0,"DelayTime":1,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0007","CurrAmmon":"60","ResidueAmmo":"60"},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":-50,"Y":114},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":2,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0003","CurrAmmon":"12","ResidueAmmo":"12"},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":45,"Y":187},"Size":{"X":42,"Y":72},"SpecialMarkType":0,"DelayTime":3,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0003","CurrAmmon":"12","ResidueAmmo":"12"},"Altitude":0,"VerticalSpeed":0}]}]]}]
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/Preinstall.json b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/Preinstall.json
index 5c7dbfe..3734766 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/Preinstall.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/Preinstall.json
@@ -1 +1 @@
-[{"Name":"test12","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":148,"Y":139},"Size":{"X":90,"Y":53},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":126,"Y":79},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":40,"Y":46},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":77,"Y":54},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]}],[{"Position":{"X":61,"Y":19},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":1,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0001","CurrAmmon":"30","ResidueAmmo":"30"},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":110,"Y":18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0001","CurrAmmon":"30","ResidueAmmo":"30"},"Altitude":0,"VerticalSpeed":0}]}]]}]
\ No newline at end of file
+[{"Name":"test12","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":406,"Y":427},"Size":{"X":66,"Y":54},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0001","CurrAmmon":"30","ResidueAmmo":"30"},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":250,"Y":439},"Size":{"X":98,"Y":68},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0001","CurrAmmon":"30","ResidueAmmo":"30"},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":329,"Y":370},"Size":{"X":44,"Y":65},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0001","CurrAmmon":"30","ResidueAmmo":"30"},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":317,"Y":196},"Size":{"X":201,"Y":60},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]}],[{"Position":{"X":220,"Y":317},"Size":{"X":39,"Y":134},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0002","Weight":100,"Attr":{"CurrAmmon":"7","ResidueAmmo":"70"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":473,"Y":302},"Size":{"X":61,"Y":111},"SpecialMarkType":0,"DelayTime":0.5,"MarkList":[{"Id":"weapon0002","Weight":100,"Attr":{"CurrAmmon":"7","ResidueAmmo":"70"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":285,"Y":426},"Size":{"X":149,"Y":56},"SpecialMarkType":0,"DelayTime":1,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":468,"Y":324},"Size":{"X":66,"Y":110},"SpecialMarkType":0,"DelayTime":1.5,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":346,"Y":371},"Size":{"X":17,"Y":94},"SpecialMarkType":0,"DelayTime":2,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":387,"Y":200},"Size":{"X":82,"Y":36},"SpecialMarkType":0,"DelayTime":2.5,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":246,"Y":175},"Size":{"X":84,"Y":65},"SpecialMarkType":0,"DelayTime":3,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":null},"Altitude":0,"VerticalSpeed":0}]}],[{"Position":{"X":325,"Y":417},"Size":{"X":41,"Y":45},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0006","CurrAmmon":"20","ResidueAmmo":"20"},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":443,"Y":242},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0006","CurrAmmon":"20","ResidueAmmo":"20"},"Altitude":0,"VerticalSpeed":0}]},{"Position":{"X":241,"Y":227},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":1,"MarkList":[{"Id":"enemy0001","Weight":100,"Attr":{"Face":"0","Weapon":"weapon0006","CurrAmmon":"20","ResidueAmmo":"20"},"Altitude":0,"VerticalSpeed":0}]}]]}]
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/Preview.png
index b3461cc..95d5f00 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/Preview.png
+++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/Preview.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/RoomInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/RoomInfo.json
index a3cf1e0..61b84dc 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/RoomInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/RoomInfo.json
@@ -1 +1 @@
-{"Position":{"X":-4,"Y":-3},"Size":{"X":19,"Y":15},"DoorAreaInfos":[{"Direction":3,"Start":0,"End":192},{"Direction":1,"Start":0,"End":128},{"Direction":2,"Start":96,"End":272},{"Direction":0,"Start":64,"End":208}],"GroupName":"TestGroup1","RoomType":0,"RoomName":"Battle3","Weight":100,"Remark":""}
\ No newline at end of file
+{"Position":{"X":10,"Y":6},"Size":{"X":24,"Y":25},"DoorAreaInfos":[{"Direction":1,"Start":0,"End":368},{"Direction":3,"Start":0,"End":208},{"Direction":0,"Start":96,"End":272},{"Direction":2,"Start":0,"End":144}],"GroupName":"TestGroup1","RoomType":0,"RoomName":"Battle3","Weight":100,"Remark":""}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/TileInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/TileInfo.json
index 50c8e11..6e7dcaa 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/TileInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/battle/Battle3/TileInfo.json
@@ -1 +1 @@
-{"NavigationList":[{"Type":0,"Points":[-40,-24,136,-24,136,40,216,40,216,176,56,176,56,112,24,112,24,96,-40,96]}],"Floor":[2,6,0,0,8,2,5,0,0,8,2,4,0,0,8,2,3,0,0,8,2,2,0,0,8,2,1,0,0,8,2,0,0,0,8,2,-1,0,0,8,2,-2,0,0,8,1,6,0,0,8,1,5,0,0,8,1,4,0,0,8,1,3,0,0,8,1,2,0,0,8,1,1,0,0,8,1,0,0,0,8,1,-1,0,0,8,1,-2,0,0,8,0,5,0,0,8,0,4,0,0,8,0,3,0,0,8,0,2,0,0,8,0,1,0,0,8,0,0,0,0,8,0,-1,0,0,8,0,-2,0,0,8,-1,5,0,0,8,-1,4,0,0,8,-1,3,0,0,8,-1,2,0,0,8,-1,1,0,0,8,-1,0,0,0,8,-1,-1,0,0,8,-1,-2,0,0,8,-2,5,0,0,8,-2,4,0,0,8,-2,3,0,0,8,-2,2,0,0,8,-2,1,0,0,8,-2,0,0,0,8,-2,-1,0,0,8,-2,-2,0,0,8,-3,5,0,0,8,-3,4,0,0,8,-3,3,0,0,8,-3,2,0,0,8,-3,1,0,0,8,-3,0,0,0,8,-3,-1,0,0,8,-3,-2,0,0,8,13,10,0,0,8,13,9,0,0,8,13,8,0,0,8,13,7,0,0,8,13,6,0,0,8,13,5,0,0,8,13,4,0,0,8,13,2,0,0,8,13,3,0,0,8,12,9,0,0,8,12,8,0,0,8,12,7,0,0,8,12,6,0,0,8,12,5,0,0,8,12,4,0,0,8,12,3,0,0,8,12,2,0,0,8,12,10,0,0,8,11,8,0,0,8,11,7,0,0,8,11,6,0,0,8,11,5,0,0,8,11,4,0,0,8,11,3,0,0,8,11,2,0,0,8,11,10,0,0,8,11,9,0,0,8,10,10,0,0,8,10,7,0,0,8,10,6,0,0,8,10,5,0,0,8,10,4,0,0,8,10,3,0,0,8,10,2,0,0,8,10,9,0,0,8,10,8,0,0,8,9,10,0,0,8,9,9,0,0,8,9,7,0,0,8,9,6,0,0,8,9,5,0,0,8,9,4,0,0,8,9,3,0,0,8,9,2,0,0,8,9,8,0,0,8,8,1,0,0,8,8,0,0,0,8,8,-1,0,0,8,8,-2,0,0,8,8,10,0,0,8,8,9,0,0,8,8,8,0,0,8,8,6,0,0,8,8,5,0,0,8,8,4,0,0,8,8,3,0,0,8,8,2,0,0,8,8,7,0,0,8,7,1,0,0,8,7,0,0,0,8,7,-1,0,0,8,7,-2,0,0,8,7,10,0,0,8,7,9,0,0,8,7,8,0,0,8,7,7,0,0,8,7,5,0,0,8,7,4,0,0,8,7,3,0,0,8,7,2,0,0,8,7,6,0,0,8,6,1,0,0,8,6,0,0,0,8,6,-1,0,0,8,6,-2,0,0,8,6,10,0,0,8,6,9,0,0,8,6,8,0,0,8,6,7,0,0,8,6,6,0,0,8,6,4,0,0,8,6,3,0,0,8,6,2,0,0,8,6,5,0,0,8,5,1,0,0,8,5,0,0,0,8,5,-1,0,0,8,5,-2,0,0,8,5,10,0,0,8,5,9,0,0,8,5,8,0,0,8,5,7,0,0,8,5,6,0,0,8,5,4,0,0,8,5,3,0,0,8,5,2,0,0,8,5,5,0,0,8,4,1,0,0,8,4,0,0,0,8,4,-1,0,0,8,4,-2,0,0,8,4,10,0,0,8,4,9,0,0,8,4,8,0,0,8,4,7,0,0,8,4,6,0,0,8,4,5,0,0,8,4,2,0,0,8,4,3,0,0,8,4,4,0,0,8,3,1,0,0,8,3,0,0,0,8,3,-1,0,0,8,3,-2,0,0,8,3,10,0,0,8,3,9,0,0,8,3,8,0,0,8,3,7,0,0,8,3,6,0,0,8,3,5,0,0,8,3,2,0,0,8,3,3,0,0,8,3,4,0,0,8],"Middle":[-3,-3,0,2,7,-2,-3,0,2,7,-1,-3,0,2,7,0,-3,0,2,7,1,-3,0,2,7,2,-3,0,2,7,3,-3,0,2,7,4,-3,0,2,7,5,-3,0,2,7,6,-3,0,2,7,7,-3,0,2,7,8,-3,0,2,7,9,1,0,1,7,10,1,0,2,7,11,1,0,2,7,12,1,0,2,7,13,1,0,2,7],"Top":[-4,-3,0,3,4,-4,-2,0,3,3,-4,-1,0,3,3,-4,0,0,3,3,-4,1,0,3,3,-4,2,0,3,3,-4,3,0,3,3,-4,4,0,3,3,-4,5,0,3,3,-4,6,0,11,2,-3,6,0,2,2,-2,6,0,2,2,-1,6,0,2,2,0,6,0,3,2,0,7,0,11,2,1,7,0,2,2,2,7,0,3,2,2,8,0,3,3,2,9,0,3,3,2,10,0,3,3,2,11,0,11,2,3,11,0,2,2,4,11,0,2,2,5,11,0,2,2,6,11,0,2,2,7,11,0,2,2,8,11,0,2,2,9,-3,0,1,4,9,-2,0,1,3,9,-1,0,1,3,9,0,0,1,3,9,11,0,2,2,10,11,0,2,2,11,11,0,2,2,12,11,0,2,2,13,11,0,2,2,14,1,0,1,4,14,2,0,1,3,14,3,0,1,3,14,4,0,1,3,14,5,0,1,3,14,6,0,1,3,14,7,0,1,3,14,8,0,1,3,14,9,0,1,3,14,10,0,1,3,14,11,0,13,2]}
\ No newline at end of file
+{"NavigationList":[{"Type":0,"Points":[184,120,376,120,376,152,440,152,440,216,520,216,520,384,456,384,456,464,312,464,312,480,184,480]},{"Type":1,"Points":[264,240,392,240,392,272,424,272,424,344,408,344,408,392,360,392,360,312,312,312,312,328,296,328,296,392,248,392,248,256,264,256]}],"Floor":[32,23,0,0,8,32,22,0,0,8,32,21,0,0,8,32,20,0,0,8,32,19,0,0,8,32,18,0,0,8,32,17,0,0,8,32,16,0,0,8,32,15,0,0,8,32,14,0,0,8,32,13,0,0,8,31,23,0,0,8,31,22,0,0,8,31,21,0,0,8,31,20,0,0,8,31,19,0,0,8,31,18,0,0,8,31,17,0,0,8,31,16,0,0,8,31,15,0,0,8,31,14,0,0,8,31,13,0,0,8,30,23,0,0,8,30,22,0,0,8,30,21,0,0,8,30,20,0,0,8,30,19,0,0,8,30,18,0,0,8,30,17,0,0,8,30,16,0,0,8,30,15,0,0,8,30,14,0,0,8,30,13,0,0,8,29,23,0,0,8,29,22,0,0,8,29,21,0,0,8,29,20,0,0,8,29,19,0,0,8,29,18,0,0,8,29,17,0,0,8,29,16,0,0,8,29,15,0,0,8,29,14,0,0,8,29,13,0,0,8,28,28,0,0,8,28,27,0,0,8,28,26,0,0,8,28,25,0,0,8,28,24,0,0,8,28,23,0,0,8,28,22,0,0,8,28,21,0,0,8,28,20,0,0,8,28,19,0,0,8,28,18,0,0,8,28,17,0,0,8,28,16,0,0,8,28,15,0,0,8,28,14,0,0,8,28,13,0,0,8,27,28,0,0,8,27,27,0,0,8,27,26,0,0,8,27,25,0,0,8,27,24,0,0,8,27,23,0,0,8,27,22,0,0,8,27,21,0,0,8,27,20,0,0,8,27,19,0,0,8,27,18,0,0,8,27,17,0,0,8,27,16,0,0,8,27,15,0,0,8,27,14,0,0,8,27,13,0,0,8,27,9,0,0,8,27,10,0,0,8,27,11,0,0,8,27,12,0,0,8,26,28,0,0,8,26,27,0,0,8,26,26,0,0,8,26,25,0,0,8,26,24,0,0,8,26,23,0,0,8,26,22,0,0,8,26,21,0,0,8,26,20,0,0,8,26,19,0,0,8,26,18,0,0,8,26,17,0,0,8,26,16,0,0,8,26,15,0,0,8,26,14,0,0,8,26,13,0,0,8,26,9,0,0,8,26,10,0,0,8,26,11,0,0,8,26,12,0,0,8,25,28,0,0,8,25,27,0,0,8,25,26,0,0,8,25,25,0,0,8,25,24,0,0,8,25,23,0,0,8,25,22,0,0,8,25,21,0,0,8,25,16,0,0,8,25,15,0,0,8,25,14,0,0,8,25,13,0,0,8,25,9,0,0,8,25,10,0,0,8,25,11,0,0,8,25,12,0,0,8,24,28,0,0,8,24,27,0,0,8,24,26,0,0,8,24,25,0,0,8,24,24,0,0,8,24,16,0,0,8,24,15,0,0,8,24,14,0,0,8,24,13,0,0,8,24,9,0,0,8,24,10,0,0,8,24,11,0,0,8,24,12,0,0,8,23,28,0,0,8,23,27,0,0,8,23,26,0,0,8,23,25,0,0,8,23,24,0,0,8,23,14,0,0,8,23,13,0,0,8,23,7,0,0,8,23,8,0,0,8,23,9,0,0,8,23,10,0,0,8,23,11,0,0,8,23,12,0,0,8,22,28,0,0,8,22,27,0,0,8,22,26,0,0,8,22,25,0,0,8,22,24,0,0,8,22,23,0,0,8,22,22,0,0,8,22,21,0,0,8,22,20,0,0,8,22,19,0,0,8,22,7,0,0,8,22,8,0,0,8,22,9,0,0,8,22,10,0,0,8,22,11,0,0,8,22,12,0,0,8,22,13,0,0,8,22,14,0,0,8,21,28,0,0,8,21,27,0,0,8,21,26,0,0,8,21,25,0,0,8,21,24,0,0,8,21,23,0,0,8,21,22,0,0,8,21,21,0,0,8,21,20,0,0,8,21,19,0,0,8,21,7,0,0,8,21,8,0,0,8,21,9,0,0,8,21,10,0,0,8,21,11,0,0,8,21,12,0,0,8,21,13,0,0,8,21,14,0,0,8,20,28,0,0,8,20,27,0,0,8,20,26,0,0,8,20,25,0,0,8,20,24,0,0,8,20,23,0,0,8,20,22,0,0,8,20,21,0,0,8,20,20,0,0,8,20,19,0,0,8,20,7,0,0,8,20,8,0,0,8,20,9,0,0,8,20,10,0,0,8,20,11,0,0,8,20,12,0,0,8,20,13,0,0,8,20,14,0,0,8,19,29,0,0,8,19,28,0,0,8,19,27,0,0,8,19,26,0,0,8,19,25,0,0,8,19,24,0,0,8,19,23,0,0,8,19,22,0,0,8,19,21,0,0,8,19,20,0,0,8,19,19,0,0,8,19,7,0,0,8,19,8,0,0,8,19,9,0,0,8,19,10,0,0,8,19,11,0,0,8,19,12,0,0,8,19,13,0,0,8,19,14,0,0,8,18,29,0,0,8,18,28,0,0,8,18,27,0,0,8,18,26,0,0,8,18,25,0,0,8,18,24,0,0,8,18,23,0,0,8,18,22,0,0,8,18,21,0,0,8,18,20,0,0,8,18,7,0,0,8,18,8,0,0,8,18,9,0,0,8,18,10,0,0,8,18,11,0,0,8,18,12,0,0,8,18,13,0,0,8,18,14,0,0,8,17,29,0,0,8,17,28,0,0,8,17,27,0,0,8,17,26,0,0,8,17,25,0,0,8,17,24,0,0,8,17,7,0,0,8,17,8,0,0,8,17,9,0,0,8,17,10,0,0,8,17,11,0,0,8,17,12,0,0,8,17,13,0,0,8,17,14,0,0,8,16,29,0,0,8,16,28,0,0,8,16,27,0,0,8,16,26,0,0,8,16,25,0,0,8,16,24,0,0,8,16,7,0,0,8,16,8,0,0,8,16,9,0,0,8,16,10,0,0,8,16,11,0,0,8,16,12,0,0,8,16,13,0,0,8,16,14,0,0,8,16,15,0,0,8,15,29,0,0,8,15,28,0,0,8,15,27,0,0,8,15,26,0,0,8,15,25,0,0,8,15,24,0,0,8,15,23,0,0,8,15,22,0,0,8,15,21,0,0,8,15,20,0,0,8,15,7,0,0,8,15,8,0,0,8,15,9,0,0,8,15,10,0,0,8,15,11,0,0,8,15,12,0,0,8,15,13,0,0,8,15,14,0,0,8,15,15,0,0,8,15,16,0,0,8,15,17,0,0,8,15,18,0,0,8,15,19,0,0,8,14,29,0,0,8,14,28,0,0,8,14,27,0,0,8,14,26,0,0,8,14,25,0,0,8,14,24,0,0,8,14,23,0,0,8,14,22,0,0,8,14,21,0,0,8,14,20,0,0,8,14,7,0,0,8,14,8,0,0,8,14,9,0,0,8,14,10,0,0,8,14,11,0,0,8,14,12,0,0,8,14,13,0,0,8,14,14,0,0,8,14,15,0,0,8,14,16,0,0,8,14,17,0,0,8,14,18,0,0,8,14,19,0,0,8,13,29,0,0,8,13,28,0,0,8,13,27,0,0,8,13,26,0,0,8,13,25,0,0,8,13,24,0,0,8,13,23,0,0,8,13,22,0,0,8,13,21,0,0,8,13,20,0,0,8,13,7,0,0,8,13,8,0,0,8,13,9,0,0,8,13,10,0,0,8,13,11,0,0,8,13,12,0,0,8,13,13,0,0,8,13,14,0,0,8,13,15,0,0,8,13,16,0,0,8,13,17,0,0,8,13,18,0,0,8,13,19,0,0,8,12,29,0,0,8,12,28,0,0,8,12,27,0,0,8,12,26,0,0,8,12,25,0,0,8,12,24,0,0,8,12,23,0,0,8,12,22,0,0,8,12,21,0,0,8,12,20,0,0,8,12,7,0,0,8,12,8,0,0,8,12,9,0,0,8,12,10,0,0,8,12,11,0,0,8,12,12,0,0,8,12,13,0,0,8,12,14,0,0,8,12,15,0,0,8,12,16,0,0,8,12,17,0,0,8,12,18,0,0,8,12,19,0,0,8,11,29,0,0,8,11,28,0,0,8,11,27,0,0,8,11,26,0,0,8,11,25,0,0,8,11,24,0,0,8,11,23,0,0,8,11,22,0,0,8,11,21,0,0,8,11,20,0,0,8,11,7,0,0,8,11,8,0,0,8,11,9,0,0,8,11,10,0,0,8,11,11,0,0,8,11,12,0,0,8,11,13,0,0,8,11,14,0,0,8,11,15,0,0,8,11,16,0,0,8,11,17,0,0,8,11,18,0,0,8,11,19,0,0,8],"Middle":[11,6,0,2,7,12,6,0,2,7,13,6,0,2,7,14,6,0,2,7,15,6,0,2,7,16,6,0,2,7,16,23,0,1,7,17,6,0,2,7,17,23,0,3,7,18,6,0,2,7,18,19,0,3,7,19,6,0,2,7,19,18,0,2,7,20,6,0,2,7,20,18,0,2,7,21,6,0,2,7,21,18,0,2,7,22,6,0,2,7,22,18,0,2,7,23,6,0,2,7,23,23,0,1,7,24,8,0,1,7,24,23,0,3,7,25,8,0,2,7,25,20,0,3,7,26,8,0,2,7,27,8,0,2,7,28,12,0,1,7,29,12,0,2,7,30,12,0,2,7,31,12,0,2,7,32,12,0,2,7],"Top":[10,6,0,3,4,10,7,0,3,3,10,8,0,3,3,10,9,0,3,3,10,10,0,3,3,10,11,0,3,3,10,12,0,3,3,10,13,0,3,3,10,14,0,3,3,10,15,0,3,3,10,16,0,3,3,10,17,0,3,3,10,18,0,3,3,10,19,0,3,3,10,20,0,3,3,10,21,0,3,3,10,22,0,3,3,10,23,0,3,3,10,24,0,3,3,10,25,0,3,3,10,26,0,3,3,10,27,0,3,3,10,28,0,3,3,10,29,0,3,3,10,30,0,11,2,11,30,0,2,2,12,30,0,2,2,13,30,0,2,2,14,30,0,2,2,15,30,0,2,2,16,16,0,1,2,16,17,0,1,3,16,18,0,1,3,16,19,0,1,3,16,20,0,1,3,16,21,0,1,3,16,22,0,1,3,16,30,0,2,2,17,15,0,1,2,17,16,0,13,2,17,19,0,3,4,17,20,0,3,3,17,21,0,3,3,17,22,0,3,3,17,30,0,2,2,18,15,0,2,2,18,18,0,3,4,18,30,0,2,2,19,15,0,2,2,19,30,0,2,2,20,15,0,2,2,20,29,0,1,2,20,30,0,13,2,21,15,0,2,2,21,29,0,2,2,22,15,0,2,2,22,29,0,2,2,23,15,0,3,2,23,16,0,3,3,23,17,0,11,2,23,18,0,1,4,23,19,0,1,3,23,20,0,1,3,23,21,0,1,3,23,22,0,1,3,23,29,0,2,2,24,6,0,1,4,24,7,0,1,3,24,17,0,2,2,24,20,0,3,4,24,21,0,3,3,24,22,0,3,3,24,29,0,2,2,25,17,0,3,2,25,18,0,3,3,25,19,0,3,3,25,29,0,2,2,26,29,0,2,2,27,29,0,2,2,28,8,0,1,4,28,9,0,1,3,28,10,0,1,3,28,11,0,1,3,28,29,0,2,2,29,24,0,1,2,29,25,0,1,3,29,26,0,1,3,29,27,0,1,3,29,28,0,1,3,29,29,0,13,2,30,24,0,2,2,31,24,0,2,2,32,24,0,2,2,33,12,0,1,4,33,13,0,1,3,33,14,0,1,3,33,15,0,1,3,33,16,0,1,3,33,17,0,1,3,33,18,0,1,3,33,19,0,1,3,33,20,0,1,3,33,21,0,1,3,33,22,0,1,3,33,23,0,1,3,33,24,0,13,2]}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/Preinstall.json b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/Preinstall.json
index e81e616..131108d 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/Preinstall.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/Preinstall.json
@@ -1 +1 @@
-[{"Name":"test1","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":19,"Y":2},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":8,"Y":19},"Size":{"X":83,"Y":73},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]}],[{"Position":{"X":11,"Y":38},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":1,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]}],[{"Position":{"X":-13,"Y":3},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":1,"MarkList":[{"Id":"weapon0005","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"40"},"Altitude":8,"VerticalSpeed":0}]}]]}]
\ No newline at end of file
+[{"Name":"test1","Weight":100,"Remark":"","WaveList":[[{"Position":{"X":19,"Y":2},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":10,"Y":22},"Size":{"X":0,"Y":0},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]}],[{"Position":{"X":11,"Y":38},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-15,"Y":31},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0.5,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":36,"Y":36},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":1,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":35,"Y":2},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":1.5,"MarkList":[{"Id":"prop0002","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-12,"Y":3},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":2,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]}]]}]
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/Preview.png b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/Preview.png
index 7d32b8e..3f0900c 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/Preview.png
+++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/Preview.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/RoomInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/RoomInfo.json
index 02c0b53..4285d01 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/RoomInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/RoomInfo.json
@@ -1 +1 @@
-{"Position":{"X":-4,"Y":-3},"Size":{"X":9,"Y":8},"DoorAreaInfos":[],"GroupName":"TestGroup1","RoomType":1,"RoomName":"Start1","Weight":100,"Remark":""}
\ No newline at end of file
+{"Position":{"X":-5,"Y":-4},"Size":{"X":11,"Y":10},"DoorAreaInfos":[],"GroupName":"TestGroup1","RoomType":1,"RoomName":"Start1","Weight":100,"Remark":""}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/TileInfo.json b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/TileInfo.json
index 34882e2..22e1c00 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/TileInfo.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/TestGroup1/inlet/Start1/TileInfo.json
@@ -1 +1 @@
-{"NavigationList":[{"Type":0,"Points":[-40,-24,56,-24,56,64,-40,64]}],"Floor":[3,3,0,0,8,3,2,0,0,8,3,1,0,0,8,3,0,0,0,8,3,-1,0,0,8,3,-2,0,0,8,2,3,0,0,8,2,2,0,0,8,2,1,0,0,8,2,0,0,0,8,2,-1,0,0,8,2,-2,0,0,8,1,3,0,0,8,1,2,0,0,8,1,1,0,0,8,1,0,0,0,8,1,-1,0,0,8,1,-2,0,0,8,0,3,0,0,8,0,2,0,0,8,0,1,0,0,8,0,0,0,0,8,0,-1,0,0,8,0,-2,0,0,8,-1,3,0,0,8,-1,2,0,0,8,-1,1,0,0,8,-1,0,0,0,8,-1,-1,0,0,8,-1,-2,0,0,8,-2,3,0,0,8,-2,2,0,0,8,-2,1,0,0,8,-2,0,0,0,8,-2,-1,0,0,8,-2,-2,0,0,8,-3,3,0,0,8,-3,2,0,0,8,-3,1,0,0,8,-3,0,0,0,8,-3,-1,0,0,8,-3,-2,0,0,8],"Middle":[-3,-3,0,2,7,-2,-3,0,2,7,-1,-3,0,2,7,0,-3,0,2,7,1,-3,0,2,7,2,-3,0,2,7,3,-3,0,2,7],"Top":[-4,-3,0,3,4,-4,-2,0,3,3,-4,-1,0,3,3,-4,0,0,3,3,-4,1,0,3,3,-4,2,0,3,3,-4,3,0,3,3,-4,4,0,11,2,-3,4,0,2,2,-2,4,0,2,2,-1,4,0,2,2,0,4,0,2,2,1,4,0,2,2,2,4,0,2,2,3,4,0,2,2,4,-3,0,1,4,4,-2,0,1,3,4,-1,0,1,3,4,0,0,1,3,4,1,0,1,3,4,2,0,1,3,4,3,0,1,3,4,4,0,13,2]}
\ No newline at end of file
+{"NavigationList":[{"Type":0,"Points":[-56,-40,72,-40,72,80,-56,80]}],"Floor":[-4,-3,0,0,8,-4,-2,0,0,8,-4,-1,0,0,8,-4,0,0,0,8,-4,1,0,0,8,-4,2,0,0,8,-4,3,0,0,8,-4,4,0,0,8,-3,-3,0,0,8,-3,-2,0,0,8,-3,-1,0,0,8,-3,0,0,0,8,-3,1,0,0,8,-3,2,0,0,8,-3,3,0,0,8,-3,4,0,0,8,-2,-3,0,0,8,-2,-2,0,0,8,-2,-1,0,0,8,-2,0,0,0,8,-2,1,0,0,8,-2,2,0,0,8,-2,3,0,0,8,-2,4,0,0,8,-1,-3,0,0,8,-1,-2,0,0,8,-1,-1,0,0,8,-1,0,0,0,8,-1,1,0,0,8,-1,2,0,0,8,-1,3,0,0,8,-1,4,0,0,8,0,-3,0,0,8,0,-2,0,0,8,0,-1,0,0,8,0,0,0,0,8,0,1,0,0,8,0,2,0,0,8,0,3,0,0,8,0,4,0,0,8,4,-3,0,0,8,4,-2,0,0,8,4,-1,0,0,8,4,0,0,0,8,4,1,0,0,8,4,2,0,0,8,4,3,0,0,8,4,4,0,0,8,3,-3,0,0,8,3,-2,0,0,8,3,-1,0,0,8,3,0,0,0,8,3,1,0,0,8,3,2,0,0,8,3,3,0,0,8,3,4,0,0,8,2,-3,0,0,8,2,-2,0,0,8,2,-1,0,0,8,2,0,0,0,8,2,1,0,0,8,2,2,0,0,8,2,3,0,0,8,2,4,0,0,8,1,-3,0,0,8,1,-2,0,0,8,1,-1,0,0,8,1,0,0,0,8,1,1,0,0,8,1,2,0,0,8,1,3,0,0,8,1,4,0,0,8],"Middle":[-4,-4,0,2,7,-3,-4,0,2,7,-2,-4,0,2,7,-1,-4,0,2,7,0,-4,0,2,7,1,-4,0,2,7,2,-4,0,2,7,3,-4,0,2,7,4,-4,0,2,7],"Top":[-5,-4,0,3,4,-5,-3,0,3,3,-5,-2,0,3,3,-5,-1,0,3,3,-5,0,0,3,3,-5,1,0,3,3,-5,2,0,3,3,-5,3,0,3,3,-5,4,0,3,3,-5,5,0,11,2,-4,5,0,2,2,-3,5,0,2,2,-2,5,0,2,2,-1,5,0,2,2,0,5,0,2,2,1,5,0,2,2,2,5,0,2,2,3,5,0,2,2,4,5,0,2,2,5,-4,0,1,4,5,-3,0,1,3,5,-2,0,1,3,5,-1,0,1,3,5,0,0,1,3,5,1,0,1,3,5,2,0,1,3,5,3,0,1,3,5,4,0,1,3,5,5,0,13,2]}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/material/Blend.gdshader b/DungeonShooting_Godot/resource/material/Blend.gdshader
index a40db2f..f83601b 100644
--- a/DungeonShooting_Godot/resource/material/Blend.gdshader
+++ b/DungeonShooting_Godot/resource/material/Blend.gdshader
@@ -21,6 +21,7 @@
void fragment() {
//显示轮廓
if (show_outline) {
+ vec4 color = texture(TEXTURE, UV);
vec2 size = TEXTURE_PIXEL_SIZE;
float outline;
outline = texture(TEXTURE, UV + vec2(-size.x, 0)).a;
@@ -29,18 +30,19 @@
outline += texture(TEXTURE, UV + vec2(0, -size.y)).a;
outline = min(outline, 1.0);
- vec4 animated_line_color = vec4(
- light_offset + sin(2.0 * 3.14 * frequency * TIME),
- light_offset + sin(2.0 * 3.14 * frequency * TIME + radians(120.0)),
- light_offset + sin(2.0 * 3.14 * frequency * TIME + radians(240.0)),
- 1.0
- );
-
- vec4 color = texture(TEXTURE, UV);
- if (outline_rainbow){
- COLOR = mix(color, animated_line_color, outline - color.a);
- } else {
- COLOR = mix(color, outline_color , outline - color.a);
+ if (color.a == 0.0 && outline > 0.0) {
+ vec4 animated_line_color = vec4(
+ light_offset + sin(2.0 * 3.14 * frequency * TIME),
+ light_offset + sin(2.0 * 3.14 * frequency * TIME + radians(120.0)),
+ light_offset + sin(2.0 * 3.14 * frequency * TIME + radians(240.0)),
+ 1.0
+ );
+
+ if (outline_rainbow){
+ COLOR = mix(color, animated_line_color, 1);
+ } else {
+ COLOR = mix(color, outline_color , 1);
+ }
}
}
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/bullet0001.png b/DungeonShooting_Godot/resource/sprite/bullet/bullet0001.png
index fb6ccea..5b488de 100644
--- a/DungeonShooting_Godot/resource/sprite/bullet/bullet0001.png
+++ b/DungeonShooting_Godot/resource/sprite/bullet/bullet0001.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/bullet0002.png b/DungeonShooting_Godot/resource/sprite/bullet/bullet0002.png
index ce0577e..a76c266 100644
--- a/DungeonShooting_Godot/resource/sprite/bullet/bullet0002.png
+++ b/DungeonShooting_Godot/resource/sprite/bullet/bullet0002.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/bullet0003.png b/DungeonShooting_Godot/resource/sprite/bullet/bullet0003.png
index 6478bfa..14a69ff 100644
--- a/DungeonShooting_Godot/resource/sprite/bullet/bullet0003.png
+++ b/DungeonShooting_Godot/resource/sprite/bullet/bullet0003.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/bullet/bullet2.png b/DungeonShooting_Godot/resource/sprite/bullet/bullet2.png
index 3cea799..964f292 100644
--- a/DungeonShooting_Godot/resource/sprite/bullet/bullet2.png
+++ b/DungeonShooting_Godot/resource/sprite/bullet/bullet2.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0002.png b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0002.png
new file mode 100644
index 0000000..8210c6d
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0002.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0002.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0002.png.import
new file mode 100644
index 0000000..5d52ec2
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0002.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ekas4lqprrml"
+path="res://.godot/imported/Sprite-0002.png-8634e9efd00657175968f55f779adcb6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/idle/Sprite-0002.png"
+dest_files=["res://.godot/imported/Sprite-0002.png-8634e9efd00657175968f55f779adcb6.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/role0001/idle/Sprite-0003.png b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0003.png
new file mode 100644
index 0000000..763ccb3
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0003.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0003.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0003.png.import
new file mode 100644
index 0000000..9a07d66
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0003.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b81k08ofpf2oo"
+path="res://.godot/imported/Sprite-0003.png-389e22c6fd56e97ffdf603d4692adeee.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/idle/Sprite-0003.png"
+dest_files=["res://.godot/imported/Sprite-0003.png-389e22c6fd56e97ffdf603d4692adeee.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/role0001/idle/Sprite-0004.png b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0004.png
new file mode 100644
index 0000000..1462c2c
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0004.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0004.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0004.png.import
new file mode 100644
index 0000000..4789a2d
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0004.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://obelhor4gdmh"
+path="res://.godot/imported/Sprite-0004.png-061c2f6c3b035433d349d0695f2b2554.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/idle/Sprite-0004.png"
+dest_files=["res://.godot/imported/Sprite-0004.png-061c2f6c3b035433d349d0695f2b2554.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/role0001/idle/Sprite-0005.png b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0005.png
new file mode 100644
index 0000000..9bd9b83
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0005.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0005.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0005.png.import
new file mode 100644
index 0000000..1327f75
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0005.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dvv73cbc818e4"
+path="res://.godot/imported/Sprite-0005.png-f5ed810575618c15a05166575b275f02.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/idle/Sprite-0005.png"
+dest_files=["res://.godot/imported/Sprite-0005.png-f5ed810575618c15a05166575b275f02.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/role0001/idle/Sprite-0006.png b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0006.png
new file mode 100644
index 0000000..30d7879
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0006.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0006.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0006.png.import
new file mode 100644
index 0000000..0c19b0d
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0006.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dfom06raof2fw"
+path="res://.godot/imported/Sprite-0006.png-c14af2e7c141fa845ff8ad9da0f893db.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/idle/Sprite-0006.png"
+dest_files=["res://.godot/imported/Sprite-0006.png-c14af2e7c141fa845ff8ad9da0f893db.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/role0001/idle/Sprite-0007.png b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0007.png
new file mode 100644
index 0000000..1a9fb4a
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0007.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0007.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0007.png.import
new file mode 100644
index 0000000..92766f5
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0007.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c7dsfoaupj4qo"
+path="res://.godot/imported/Sprite-0007.png-808db64fc6ff2b3dbc32edd7232cb6f5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/idle/Sprite-0007.png"
+dest_files=["res://.godot/imported/Sprite-0007.png-808db64fc6ff2b3dbc32edd7232cb6f5.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/role0001/idle/Sprite-0008.png b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0008.png
new file mode 100644
index 0000000..462e9a3
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0008.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0008.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0008.png.import
new file mode 100644
index 0000000..28379f1
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/idle/Sprite-0008.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cwrsm1ui33d6b"
+path="res://.godot/imported/Sprite-0008.png-695a165ff124fa79425977e6468f7816.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/idle/Sprite-0008.png"
+dest_files=["res://.godot/imported/Sprite-0008.png-695a165ff124fa79425977e6468f7816.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/role0001/roll/Sprite-0002.png b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0002.png
new file mode 100644
index 0000000..df4b964
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0002.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0002.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0002.png.import
new file mode 100644
index 0000000..10663d3
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0002.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d3thq2unooyl5"
+path="res://.godot/imported/Sprite-0002.png-213031b39254f00c0c725e4252a9d486.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/roll/Sprite-0002.png"
+dest_files=["res://.godot/imported/Sprite-0002.png-213031b39254f00c0c725e4252a9d486.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/role0001/roll/Sprite-0003.png b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0003.png
new file mode 100644
index 0000000..12b6942
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0003.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0003.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0003.png.import
new file mode 100644
index 0000000..c89343a
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0003.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ccqgkq5qv33il"
+path="res://.godot/imported/Sprite-0003.png-e6803dc1c9e8f17b579f63f5e8cb8e23.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/roll/Sprite-0003.png"
+dest_files=["res://.godot/imported/Sprite-0003.png-e6803dc1c9e8f17b579f63f5e8cb8e23.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/role0001/roll/Sprite-0004.png b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0004.png
new file mode 100644
index 0000000..6bc1574
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0004.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0004.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0004.png.import
new file mode 100644
index 0000000..5e6e424
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0004.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://sknj4eflhbvc"
+path="res://.godot/imported/Sprite-0004.png-8d2b0ef4221d99fc8d9133c4f11809ff.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/roll/Sprite-0004.png"
+dest_files=["res://.godot/imported/Sprite-0004.png-8d2b0ef4221d99fc8d9133c4f11809ff.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/role0001/roll/Sprite-0005.png b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0005.png
new file mode 100644
index 0000000..a1128d2
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0005.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0005.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0005.png.import
new file mode 100644
index 0000000..7d04efe
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0005.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c8ijooj30lvpw"
+path="res://.godot/imported/Sprite-0005.png-9c344cd4269051bef354e37f494af4b3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/roll/Sprite-0005.png"
+dest_files=["res://.godot/imported/Sprite-0005.png-9c344cd4269051bef354e37f494af4b3.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/role0001/roll/Sprite-0006.png b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0006.png
new file mode 100644
index 0000000..0bb3b72
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0006.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0006.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0006.png.import
new file mode 100644
index 0000000..2912fea
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0006.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://blqx76rvx6c34"
+path="res://.godot/imported/Sprite-0006.png-1cb8bb9f32bbeef7eb914435df8b325e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/roll/Sprite-0006.png"
+dest_files=["res://.godot/imported/Sprite-0006.png-1cb8bb9f32bbeef7eb914435df8b325e.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/role0001/roll/Sprite-0007.png b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0007.png
new file mode 100644
index 0000000..a7f4176
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0007.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0007.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0007.png.import
new file mode 100644
index 0000000..3dc376b
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0007.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://48qebkjqggub"
+path="res://.godot/imported/Sprite-0007.png-e2c0f4efb93a9c9e29fa2a8da4c24baf.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/roll/Sprite-0007.png"
+dest_files=["res://.godot/imported/Sprite-0007.png-e2c0f4efb93a9c9e29fa2a8da4c24baf.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/role0001/roll/Sprite-0008.png b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0008.png
new file mode 100644
index 0000000..b15c6ef
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0008.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0008.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0008.png.import
new file mode 100644
index 0000000..8da943b
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0008.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dvrxriqd6dk1d"
+path="res://.godot/imported/Sprite-0008.png-bf19680d71b1e849c210397f3a25fca2.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/roll/Sprite-0008.png"
+dest_files=["res://.godot/imported/Sprite-0008.png-bf19680d71b1e849c210397f3a25fca2.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/role0001/roll/Sprite-0009.png b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0009.png
new file mode 100644
index 0000000..12b6942
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0009.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0009.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0009.png.import
new file mode 100644
index 0000000..c606373
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0009.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ceqi6d4vhbpt"
+path="res://.godot/imported/Sprite-0009.png-d266a086bd0825b44bd46a64ac6248f3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/roll/Sprite-0009.png"
+dest_files=["res://.godot/imported/Sprite-0009.png-d266a086bd0825b44bd46a64ac6248f3.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/role0001/roll/Sprite-0010.png b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0010.png
new file mode 100644
index 0000000..df4b964
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0010.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0010.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0010.png.import
new file mode 100644
index 0000000..b6b498e
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/roll/Sprite-0010.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cp8d5kqfwcyjf"
+path="res://.godot/imported/Sprite-0010.png-c80699f0403ae66453b70f57a31ecc59.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/roll/Sprite-0010.png"
+dest_files=["res://.godot/imported/Sprite-0010.png-c80699f0403ae66453b70f57a31ecc59.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/role0001/run/Sprite-0002.png b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0002.png
new file mode 100644
index 0000000..667633e
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0002.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0002.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0002.png.import
new file mode 100644
index 0000000..b724b0f
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0002.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b1gh481w2xvsl"
+path="res://.godot/imported/Sprite-0002.png-071631cbf3e4907d8ef6d018f7604aed.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/run/Sprite-0002.png"
+dest_files=["res://.godot/imported/Sprite-0002.png-071631cbf3e4907d8ef6d018f7604aed.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/role0001/run/Sprite-0003.png b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0003.png
new file mode 100644
index 0000000..fa045cd
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0003.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0003.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0003.png.import
new file mode 100644
index 0000000..c688303
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0003.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cw83liyy6gnln"
+path="res://.godot/imported/Sprite-0003.png-358677bca18cac4d1b8ea9279ea6300a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/run/Sprite-0003.png"
+dest_files=["res://.godot/imported/Sprite-0003.png-358677bca18cac4d1b8ea9279ea6300a.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/role0001/run/Sprite-0004.png b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0004.png
new file mode 100644
index 0000000..40cff6f
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0004.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0004.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0004.png.import
new file mode 100644
index 0000000..880ba0d
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0004.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d32g0f5vk68sj"
+path="res://.godot/imported/Sprite-0004.png-f6093d543ecb8d8231548f55dd0990ab.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/run/Sprite-0004.png"
+dest_files=["res://.godot/imported/Sprite-0004.png-f6093d543ecb8d8231548f55dd0990ab.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/role0001/run/Sprite-0005.png b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0005.png
new file mode 100644
index 0000000..de33c31
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0005.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0005.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0005.png.import
new file mode 100644
index 0000000..b06668e
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0005.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://pqn660nyk82t"
+path="res://.godot/imported/Sprite-0005.png-c552ad0bee6498090790449be66db4cf.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/run/Sprite-0005.png"
+dest_files=["res://.godot/imported/Sprite-0005.png-c552ad0bee6498090790449be66db4cf.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/role0001/run/Sprite-0006.png b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0006.png
new file mode 100644
index 0000000..8e69469
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0006.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0006.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0006.png.import
new file mode 100644
index 0000000..cc40179
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0006.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://de24cv2v45gkf"
+path="res://.godot/imported/Sprite-0006.png-e1227fdd50ae95e39bb2de41e6b1ca38.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/run/Sprite-0006.png"
+dest_files=["res://.godot/imported/Sprite-0006.png-e1227fdd50ae95e39bb2de41e6b1ca38.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/role0001/run/Sprite-0007.png b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0007.png
new file mode 100644
index 0000000..9a1329a
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0007.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0007.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0007.png.import
new file mode 100644
index 0000000..c0743aa
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0007.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dfxsecrlc85pi"
+path="res://.godot/imported/Sprite-0007.png-828f576b712f54a843f8a774a88ef801.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/run/Sprite-0007.png"
+dest_files=["res://.godot/imported/Sprite-0007.png-828f576b712f54a843f8a774a88ef801.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/role0001/run/Sprite-0008.png b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0008.png
new file mode 100644
index 0000000..78b58bb
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0008.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0008.png.import b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0008.png.import
new file mode 100644
index 0000000..ec5eb01
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/role/role0001/run/Sprite-0008.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://clqgeyii6lkm6"
+path="res://.godot/imported/Sprite-0008.png-a7167d5a14030137253ea6b864c2c5d4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/role/role0001/run/Sprite-0008.png"
+dest_files=["res://.godot/imported/Sprite-0008.png-a7167d5a14030137253ea6b864c2c5d4.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/role/Role0001.tres b/DungeonShooting_Godot/resource/spriteFrames/role/Role0001.tres
index 51d0ef0..e262de5 100644
--- a/DungeonShooting_Godot/resource/spriteFrames/role/Role0001.tres
+++ b/DungeonShooting_Godot/resource/spriteFrames/role/Role0001.tres
@@ -1,64 +1,25 @@
[gd_resource type="SpriteFrames" load_steps=15 format=3 uid="uid://n11thtali6es"]
-[ext_resource type="Texture2D" uid="uid://bhwhhg2dfsr26" path="res://resource/sprite/role/role0001/Role0001.png" id="1_frpf2"]
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_tmewn"]
-atlas = ExtResource("1_frpf2")
-region = Rect2(0, 0, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_dvg4a"]
-atlas = ExtResource("1_frpf2")
-region = Rect2(0, 24, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_kvuct"]
-atlas = ExtResource("1_frpf2")
-region = Rect2(16, 24, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_5op76"]
-atlas = ExtResource("1_frpf2")
-region = Rect2(32, 24, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_helyc"]
-atlas = ExtResource("1_frpf2")
-region = Rect2(48, 24, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_67mn8"]
-atlas = ExtResource("1_frpf2")
-region = Rect2(48, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_jeywq"]
-atlas = ExtResource("1_frpf2")
-region = Rect2(32, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_oycx8"]
-atlas = ExtResource("1_frpf2")
-region = Rect2(16, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_tjg1t"]
-atlas = ExtResource("1_frpf2")
-region = Rect2(0, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_2ltxw"]
-atlas = ExtResource("1_frpf2")
-region = Rect2(0, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_x1va1"]
-atlas = ExtResource("1_frpf2")
-region = Rect2(16, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_ic2p5"]
-atlas = ExtResource("1_frpf2")
-region = Rect2(32, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_j3hdu"]
-atlas = ExtResource("1_frpf2")
-region = Rect2(48, 48, 16, 24)
+[ext_resource type="Texture2D" uid="uid://ekas4lqprrml" path="res://resource/sprite/role/role0001/idle/Sprite-0002.png" id="1_le6bk"]
+[ext_resource type="Texture2D" uid="uid://b81k08ofpf2oo" path="res://resource/sprite/role/role0001/idle/Sprite-0003.png" id="2_whsc2"]
+[ext_resource type="Texture2D" uid="uid://obelhor4gdmh" path="res://resource/sprite/role/role0001/idle/Sprite-0004.png" id="3_peq88"]
+[ext_resource type="Texture2D" uid="uid://dvv73cbc818e4" path="res://resource/sprite/role/role0001/idle/Sprite-0005.png" id="4_arikg"]
+[ext_resource type="Texture2D" uid="uid://dfom06raof2fw" path="res://resource/sprite/role/role0001/idle/Sprite-0006.png" id="5_0bq3k"]
+[ext_resource type="Texture2D" uid="uid://c7dsfoaupj4qo" path="res://resource/sprite/role/role0001/idle/Sprite-0007.png" id="6_hw6v8"]
+[ext_resource type="Texture2D" uid="uid://cwrsm1ui33d6b" path="res://resource/sprite/role/role0001/idle/Sprite-0008.png" id="7_heo28"]
+[ext_resource type="Texture2D" uid="uid://clqgeyii6lkm6" path="res://resource/sprite/role/role0001/run/Sprite-0008.png" id="8_scwvl"]
+[ext_resource type="Texture2D" uid="uid://dfxsecrlc85pi" path="res://resource/sprite/role/role0001/run/Sprite-0007.png" id="9_yjs5f"]
+[ext_resource type="Texture2D" uid="uid://de24cv2v45gkf" path="res://resource/sprite/role/role0001/run/Sprite-0006.png" id="10_uafyp"]
+[ext_resource type="Texture2D" uid="uid://pqn660nyk82t" path="res://resource/sprite/role/role0001/run/Sprite-0005.png" id="11_ndgr1"]
+[ext_resource type="Texture2D" uid="uid://d32g0f5vk68sj" path="res://resource/sprite/role/role0001/run/Sprite-0004.png" id="12_cbabh"]
+[ext_resource type="Texture2D" uid="uid://cw83liyy6gnln" path="res://resource/sprite/role/role0001/run/Sprite-0003.png" id="13_u0cmp"]
+[ext_resource type="Texture2D" uid="uid://b1gh481w2xvsl" path="res://resource/sprite/role/role0001/run/Sprite-0002.png" id="14_nlfq5"]
[resource]
animations = [{
"frames": [{
"duration": 1.0,
-"texture": SubResource("AtlasTexture_tmewn")
+"texture": ExtResource("1_le6bk")
}],
"loop": true,
"name": &"default",
@@ -66,16 +27,25 @@
}, {
"frames": [{
"duration": 1.0,
-"texture": SubResource("AtlasTexture_dvg4a")
+"texture": ExtResource("1_le6bk")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_kvuct")
+"texture": ExtResource("2_whsc2")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_5op76")
+"texture": ExtResource("3_peq88")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_helyc")
+"texture": ExtResource("4_arikg")
+}, {
+"duration": 1.0,
+"texture": ExtResource("5_0bq3k")
+}, {
+"duration": 1.0,
+"texture": ExtResource("6_hw6v8")
+}, {
+"duration": 1.0,
+"texture": ExtResource("7_heo28")
}],
"loop": true,
"name": &"idle",
@@ -83,16 +53,25 @@
}, {
"frames": [{
"duration": 1.0,
-"texture": SubResource("AtlasTexture_67mn8")
+"texture": ExtResource("8_scwvl")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_jeywq")
+"texture": ExtResource("9_yjs5f")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_oycx8")
+"texture": ExtResource("10_uafyp")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_tjg1t")
+"texture": ExtResource("11_ndgr1")
+}, {
+"duration": 1.0,
+"texture": ExtResource("12_cbabh")
+}, {
+"duration": 1.0,
+"texture": ExtResource("13_u0cmp")
+}, {
+"duration": 1.0,
+"texture": ExtResource("14_nlfq5")
}],
"loop": true,
"name": &"reverseRun",
@@ -100,16 +79,25 @@
}, {
"frames": [{
"duration": 1.0,
-"texture": SubResource("AtlasTexture_2ltxw")
+"texture": ExtResource("14_nlfq5")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_x1va1")
+"texture": ExtResource("13_u0cmp")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_ic2p5")
+"texture": ExtResource("12_cbabh")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_j3hdu")
+"texture": ExtResource("11_ndgr1")
+}, {
+"duration": 1.0,
+"texture": ExtResource("10_uafyp")
+}, {
+"duration": 1.0,
+"texture": ExtResource("9_yjs5f")
+}, {
+"duration": 1.0,
+"texture": ExtResource("8_scwvl")
}],
"loop": true,
"name": &"run",
diff --git a/DungeonShooting_Godot/resource/spriteFrames/role/Role1001.tres b/DungeonShooting_Godot/resource/spriteFrames/role/Role1001.tres
index b798378..dd4a35a 100644
--- a/DungeonShooting_Godot/resource/spriteFrames/role/Role1001.tres
+++ b/DungeonShooting_Godot/resource/spriteFrames/role/Role1001.tres
@@ -1,64 +1,64 @@
[gd_resource type="SpriteFrames" load_steps=15 format=3 uid="uid://cnctpyrn02rhd"]
-[ext_resource type="Texture2D" uid="uid://ddhkhfaos2w1g" path="res://resource/sprite/role/enemy0001/Enemy0001.png" id="1_5jhli"]
+[ext_resource type="Texture2D" path="res://resource/sprite/role/enemy0001/enemy0001.png" id="1_xi6qw"]
-[sub_resource type="AtlasTexture" id="AtlasTexture_0rmv6"]
-atlas = ExtResource("1_5jhli")
+[sub_resource type="AtlasTexture" id="AtlasTexture_jttte"]
+atlas = ExtResource("1_xi6qw")
region = Rect2(0, 0, 16, 24)
-[sub_resource type="AtlasTexture" id="AtlasTexture_3ira8"]
-atlas = ExtResource("1_5jhli")
+[sub_resource type="AtlasTexture" id="AtlasTexture_ff0sc"]
+atlas = ExtResource("1_xi6qw")
region = Rect2(0, 24, 16, 24)
-[sub_resource type="AtlasTexture" id="AtlasTexture_7fx5y"]
-atlas = ExtResource("1_5jhli")
+[sub_resource type="AtlasTexture" id="AtlasTexture_mf7cn"]
+atlas = ExtResource("1_xi6qw")
region = Rect2(16, 24, 16, 24)
-[sub_resource type="AtlasTexture" id="AtlasTexture_5wd43"]
-atlas = ExtResource("1_5jhli")
+[sub_resource type="AtlasTexture" id="AtlasTexture_yvk4h"]
+atlas = ExtResource("1_xi6qw")
region = Rect2(32, 24, 16, 24)
-[sub_resource type="AtlasTexture" id="AtlasTexture_kbrex"]
-atlas = ExtResource("1_5jhli")
+[sub_resource type="AtlasTexture" id="AtlasTexture_pwcj2"]
+atlas = ExtResource("1_xi6qw")
region = Rect2(48, 24, 16, 24)
-[sub_resource type="AtlasTexture" id="AtlasTexture_bhiip"]
-atlas = ExtResource("1_5jhli")
-region = Rect2(0, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_41c1u"]
-atlas = ExtResource("1_5jhli")
-region = Rect2(16, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_1o2v8"]
-atlas = ExtResource("1_5jhli")
-region = Rect2(32, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_niadr"]
-atlas = ExtResource("1_5jhli")
+[sub_resource type="AtlasTexture" id="AtlasTexture_frwnm"]
+atlas = ExtResource("1_xi6qw")
region = Rect2(48, 48, 16, 24)
-[sub_resource type="AtlasTexture" id="AtlasTexture_j73hc"]
-atlas = ExtResource("1_5jhli")
-region = Rect2(48, 48, 16, 24)
-
-[sub_resource type="AtlasTexture" id="AtlasTexture_3bgji"]
-atlas = ExtResource("1_5jhli")
+[sub_resource type="AtlasTexture" id="AtlasTexture_201od"]
+atlas = ExtResource("1_xi6qw")
region = Rect2(32, 48, 16, 24)
-[sub_resource type="AtlasTexture" id="AtlasTexture_besw3"]
-atlas = ExtResource("1_5jhli")
+[sub_resource type="AtlasTexture" id="AtlasTexture_kteyh"]
+atlas = ExtResource("1_xi6qw")
region = Rect2(16, 48, 16, 24)
-[sub_resource type="AtlasTexture" id="AtlasTexture_350uy"]
-atlas = ExtResource("1_5jhli")
+[sub_resource type="AtlasTexture" id="AtlasTexture_huqt3"]
+atlas = ExtResource("1_xi6qw")
region = Rect2(0, 48, 16, 24)
+[sub_resource type="AtlasTexture" id="AtlasTexture_6s1ko"]
+atlas = ExtResource("1_xi6qw")
+region = Rect2(0, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_vq38t"]
+atlas = ExtResource("1_xi6qw")
+region = Rect2(16, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_2b6x5"]
+atlas = ExtResource("1_xi6qw")
+region = Rect2(32, 48, 16, 24)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_6755u"]
+atlas = ExtResource("1_xi6qw")
+region = Rect2(48, 48, 16, 24)
+
[resource]
animations = [{
"frames": [{
"duration": 1.0,
-"texture": SubResource("AtlasTexture_0rmv6")
+"texture": SubResource("AtlasTexture_jttte")
}],
"loop": true,
"name": &"default",
@@ -66,16 +66,16 @@
}, {
"frames": [{
"duration": 1.0,
-"texture": SubResource("AtlasTexture_3ira8")
+"texture": SubResource("AtlasTexture_ff0sc")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_7fx5y")
+"texture": SubResource("AtlasTexture_mf7cn")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_5wd43")
+"texture": SubResource("AtlasTexture_yvk4h")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_kbrex")
+"texture": SubResource("AtlasTexture_pwcj2")
}],
"loop": true,
"name": &"idle",
@@ -83,16 +83,16 @@
}, {
"frames": [{
"duration": 1.0,
-"texture": SubResource("AtlasTexture_bhiip")
+"texture": SubResource("AtlasTexture_frwnm")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_41c1u")
+"texture": SubResource("AtlasTexture_201od")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_1o2v8")
+"texture": SubResource("AtlasTexture_kteyh")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_niadr")
+"texture": SubResource("AtlasTexture_huqt3")
}],
"loop": true,
"name": &"reverseRun",
@@ -100,16 +100,16 @@
}, {
"frames": [{
"duration": 1.0,
-"texture": SubResource("AtlasTexture_j73hc")
+"texture": SubResource("AtlasTexture_6s1ko")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_3bgji")
+"texture": SubResource("AtlasTexture_vq38t")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_besw3")
+"texture": SubResource("AtlasTexture_2b6x5")
}, {
"duration": 1.0,
-"texture": SubResource("AtlasTexture_350uy")
+"texture": SubResource("AtlasTexture_6755u")
}],
"loop": true,
"name": &"run",
diff --git a/DungeonShooting_Godot/scene/World.tscn b/DungeonShooting_Godot/scene/World.tscn
index b23de93..5a92afa 100644
--- a/DungeonShooting_Godot/scene/World.tscn
+++ b/DungeonShooting_Godot/scene/World.tscn
@@ -7,7 +7,7 @@
background_mode = 3
glow_enabled = true
glow_normalized = true
-glow_strength = 1.1
+glow_strength = 1.05
glow_blend_mode = 1
[node name="World" type="Node2D" node_paths=PackedStringArray("NormalLayer", "YSortLayer", "TileRoot", "StaticSpriteRoot", "AffiliationAreaRoot")]
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
index 5bfbc5c..d5c52fa 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
@@ -425,7 +425,7 @@
_prevAnimationFrame = frame;
IsShowShadow = true;
- CalcShadow();
+ CalcTransform();
ShadowSprite.Visible = true;
}
@@ -659,6 +659,7 @@
{
//注意需要延时调用
CallDeferred(nameof(ShowShadowSprite));
+ CalcTransform();
}
}
else
@@ -1007,7 +1008,7 @@
_prevAnimationFrame = frame;
//计算阴影
- CalcShadow();
+ CalcTransform();
}
// Hit 动画
@@ -1135,7 +1136,7 @@
///
/// 重新计算物体阴影的位置和旋转信息, 无论是否显示阴影
///
- public void CalcShadow()
+ public void CalcTransform()
{
//缩放
ShadowSprite.Scale = AnimatedSprite.Scale;
diff --git a/DungeonShooting_Godot/src/framework/map/AffiliationArea.cs b/DungeonShooting_Godot/src/framework/map/AffiliationArea.cs
index 40c0c4a..a2cb922 100644
--- a/DungeonShooting_Godot/src/framework/map/AffiliationArea.cs
+++ b/DungeonShooting_Godot/src/framework/map/AffiliationArea.cs
@@ -31,6 +31,8 @@
public bool IsFirstEnterFlag { get; private set; } = true;
private bool _init = false;
+ private Vector2 _initSize;
+ private RectangleShape2D _shape;
///
/// 根据矩形区域初始化归属区域
@@ -44,10 +46,12 @@
_init = true;
+ _initSize = rect2.Size;
RoomInfo = roomInfo;
var collisionShape = new CollisionShape2D();
collisionShape.GlobalPosition = rect2.Position + rect2.Size / 2;
var shape = new RectangleShape2D();
+ _shape = shape;
shape.Size = rect2.Size;
collisionShape.Shape = shape;
AddChild(collisionShape);
@@ -270,4 +274,20 @@
_includeItems.Clear();
_enterItems.Clear();
}
+
+ ///
+ /// 在初始区域的基础上扩展区域, size为扩展大小
+ ///
+ public void ExtendedRegion(Vector2 size)
+ {
+ _shape.Size = _initSize + size;
+ }
+
+ ///
+ /// 将区域还原到初始大小
+ ///
+ public void RestoreRegion()
+ {
+ _shape.Size = _initSize;
+ }
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs b/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs
index ea305fd..9536b85 100644
--- a/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs
+++ b/DungeonShooting_Godot/src/framework/map/preinstall/RoomPreinstall.cs
@@ -292,8 +292,6 @@
if (activityMark.MarkType == SpecialMarkType.Normal)
{
var activityObject = CreateItem(activityMark);
- activityObject.VerticalSpeed = activityMark.VerticalSpeed;
- activityObject.Altitude = activityMark.Altitude;
//初始化属性
InitAttr(activityObject, activityMark);
//播放出生动画
@@ -357,6 +355,8 @@
{
var activityObject = ActivityObject.Create(activityMark.Id);
activityObject.Position = activityMark.Position;
+ activityObject.VerticalSpeed = activityMark.VerticalSpeed;
+ activityObject.Altitude = activityMark.Altitude;
return activityObject;
}
diff --git a/DungeonShooting_Godot/src/framework/map/room/RoomInfo.cs b/DungeonShooting_Godot/src/framework/map/room/RoomInfo.cs
index a37d67c..1d3b34a 100644
--- a/DungeonShooting_Godot/src/framework/map/room/RoomInfo.cs
+++ b/DungeonShooting_Godot/src/framework/map/room/RoomInfo.cs
@@ -85,6 +85,7 @@
public bool IsSeclusion { get; private set; } = false;
public bool IsDestroyed { get; private set; }
+ private bool _openDoorFlag = true;
// private bool _beReady = false;
// private bool _waveStart = false;
@@ -229,12 +230,9 @@
RoomPreinstall.StartWave();
return;
}
-
+
//关门
- foreach (var doorInfo in Doors)
- {
- doorInfo.Door.CloseDoor();
- }
+ CloseDoor();
IsSeclusion = true;
//执行第一波生成
@@ -249,13 +247,10 @@
if (RoomPreinstall.IsLastWave) //所有 mark 都走完了
{
IsSeclusion = false;
- //开门
if (RoomPreinstall.HasEnemy())
{
- foreach (var doorInfo in Doors)
- {
- doorInfo.Door.OpenDoor();
- }
+ //开门
+ OpenDoor();
}
//所有标记执行完成
RoomPreinstall.OverWave();
@@ -265,4 +260,38 @@
RoomPreinstall.NextWave();
}
}
+
+ ///
+ /// 打开所有门
+ ///
+ public void OpenDoor()
+ {
+ if (!_openDoorFlag)
+ {
+ _openDoorFlag = true;
+ AffiliationArea.RestoreRegion();
+ }
+
+ foreach (var doorInfo in Doors)
+ {
+ doorInfo.Door.OpenDoor();
+ }
+ }
+
+ ///
+ /// 关闭所有门
+ ///
+ public void CloseDoor()
+ {
+ if (_openDoorFlag)
+ {
+ _openDoorFlag = false;
+ AffiliationArea.ExtendedRegion(new Vector2(GameConfig.TileCellSize * 4, GameConfig.TileCellSize * 4));
+ }
+
+ foreach (var doorInfo in Doors)
+ {
+ doorInfo.Door.CloseDoor();
+ }
+ }
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/map/serialize/DungeonRoomSplit.cs b/DungeonShooting_Godot/src/framework/map/serialize/DungeonRoomSplit.cs
index 239bc8e..bc44b94 100644
--- a/DungeonShooting_Godot/src/framework/map/serialize/DungeonRoomSplit.cs
+++ b/DungeonShooting_Godot/src/framework/map/serialize/DungeonRoomSplit.cs
@@ -139,7 +139,7 @@
///
public void ReloadRoomInfo()
{
- var asText = ResourceManager.LoadText(RoomPath);
+ var asText = ResourceManager.LoadText("res://" + RoomPath);
_roomInfo = JsonSerializer.Deserialize(asText);
}
@@ -148,7 +148,7 @@
///
public void ReloadTileInfo()
{
- var asText = ResourceManager.LoadText(TilePath);
+ var asText = ResourceManager.LoadText("res://" + TilePath);
_tileInfo = JsonSerializer.Deserialize(asText);
}
@@ -157,7 +157,7 @@
///
public void ReloadPreinstall()
{
- var asText = ResourceManager.LoadText(PreinstallPath);
+ var asText = ResourceManager.LoadText("res://" + PreinstallPath);
_preinstall = JsonSerializer.Deserialize>(asText);
}
diff --git a/DungeonShooting_Godot/src/framework/ui/UiBase.cs b/DungeonShooting_Godot/src/framework/ui/UiBase.cs
index 8a16a0c..94ed4fa 100644
--- a/DungeonShooting_Godot/src/framework/ui/UiBase.cs
+++ b/DungeonShooting_Godot/src/framework/ui/UiBase.cs
@@ -92,7 +92,7 @@
}
///
- /// 每帧调用一次
+ /// 如果 Ui 处于打开状态, 则每帧调用一次
///
public virtual void Process(float delta)
{
diff --git a/DungeonShooting_Godot/src/game/GameApplication.cs b/DungeonShooting_Godot/src/game/GameApplication.cs
index 9a8e2c4..1275dd1 100644
--- a/DungeonShooting_Godot/src/game/GameApplication.cs
+++ b/DungeonShooting_Godot/src/game/GameApplication.cs
@@ -222,7 +222,7 @@
private void InitRoomConfig()
{
//加载房间配置信息
- var asText = ResourceManager.LoadText("res://resource/map/tileMaps/" + GameConfig.RoomGroupConfigFile);
+ var asText = ResourceManager.LoadText("res://" + GameConfig.RoomTileDir + GameConfig.RoomGroupConfigFile);
RoomConfig = JsonSerializer.Deserialize>(asText);
InitReadyRoom();
diff --git a/DungeonShooting_Godot/src/game/activity/bullet/Bullet.cs b/DungeonShooting_Godot/src/game/activity/bullet/Bullet.cs
index 28d9bfa..350cc34 100644
--- a/DungeonShooting_Godot/src/game/activity/bullet/Bullet.cs
+++ b/DungeonShooting_Godot/src/game/activity/bullet/Bullet.cs
@@ -1,3 +1,4 @@
+using System.Collections;
using Godot;
///
@@ -41,7 +42,17 @@
//当前子弹已经飞行的距离
private float CurrFlyDistance = 0;
- public void Init(Weapon weapon, float speed, float maxDistance, Vector2 position, float rotation, uint targetLayer)
+ ///
+ /// 初始化子弹属性
+ ///
+ /// 触发开火的角色
+ /// 射出该子弹的武器
+ /// 速度
+ /// 最大飞行距离
+ /// 位置
+ /// 角度
+ /// 攻击目标层级
+ public void Init(Role trigger, Weapon weapon, float speed, float maxDistance, Vector2 position, float rotation, uint targetLayer)
{
Weapon = weapon;
Role = weapon.Master;
@@ -49,20 +60,36 @@
CollisionArea.AreaEntered += OnArea2dEntered;
//只有玩家使用该武器才能获得正常速度的子弹
- if (weapon.Master is Player)
+ if (trigger != null && !trigger.IsAi)
{
FlySpeed = speed;
}
else
{
- FlySpeed = speed * weapon.Attribute.AiBulletSpeedScale;
+ FlySpeed = speed * weapon.AiUseAttribute.AiBulletSpeedScale;
}
MaxDistance = maxDistance;
Position = position;
Rotation = rotation;
ShadowOffset = new Vector2(0, 5);
-
BasisVelocity = new Vector2(FlySpeed, 0).Rotated(Rotation);
+
+ //如果子弹会对玩家造成伤害, 则显示红色描边
+ if (Player.Current.CollisionWithMask(targetLayer))
+ {
+ ShowOutline = true;
+ OutlineColor = new Color(1, 0, 0);
+ StartCoroutine(BorderFlashes());
+ }
+ }
+
+ private IEnumerator BorderFlashes()
+ {
+ while (true)
+ {
+ ShowOutline = !ShowOutline;
+ yield return new WaitForSeconds(0.12f);
+ }
}
protected override void PhysicsProcessOver(float delta)
@@ -118,4 +145,9 @@
Destroy();
}
}
+
+ protected override void OnDestroy()
+ {
+ StopAllCoroutine();
+ }
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/activity/role/Player.cs b/DungeonShooting_Godot/src/game/activity/role/Player.cs
index ad22cfb..a4f3640 100644
--- a/DungeonShooting_Godot/src/game/activity/role/Player.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/Player.cs
@@ -105,6 +105,11 @@
if (InputManager.Fire) //开火
{
Attack();
+ // var weaponArray = AffiliationArea.FindEnterItems(o => o is Weapon);
+ // foreach (Weapon activityObject in weaponArray)
+ // {
+ // activityObject.Trigger(this);
+ // }
}
if (InputManager.UseActiveProp) //使用道具
diff --git a/DungeonShooting_Godot/src/game/activity/role/Role.cs b/DungeonShooting_Godot/src/game/activity/role/Role.cs
index 23604aa..1221d33 100644
--- a/DungeonShooting_Godot/src/game/activity/role/Role.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/Role.cs
@@ -844,7 +844,7 @@
{
if (WeaponPack.ActiveItem != null)
{
- WeaponPack.ActiveItem.Trigger();
+ WeaponPack.ActiveItem.Trigger(this);
}
}
diff --git a/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs b/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs
index 8428a0f..f8d877d 100644
--- a/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs
+++ b/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs
@@ -9,9 +9,15 @@
public abstract partial class Weapon : ActivityObject, IPackageItem
{
///
- /// 武器属性数据
+ /// 武器使用的属性数据, 该属性会根据是否是玩家使用武器, 如果是Ai使用武器, 则会返回 AiUseAttribute 的属性对象
///
public ExcelConfig.Weapon Attribute => _weaponAttribute;
+
+ ///
+ /// Ai使用该武器的属性
+ ///
+ public ExcelConfig.Weapon AiUseAttribute => _aiWeaponAttribute;
+
private ExcelConfig.Weapon _weaponAttribute;
private ExcelConfig.Weapon _playerWeaponAttribute;
private ExcelConfig.Weapon _aiWeaponAttribute;
@@ -131,6 +137,9 @@
//--------------------------------------------------------------------------------------------
+ //触发按下扳机的角色
+ private Role _attackTrigger;
+
//是否按下
private bool _triggerFlag = false;
@@ -287,7 +296,7 @@
/// 发射子弹时调用的函数, 每发射一枚子弹调用一次,
/// 如果做霰弹武器效果, 一次开火发射5枚子弹, 则该函数调用5次
///
- /// 开火时枪口旋转角度
+ /// 开火时枪口旋转角度, 弧度制
protected abstract void OnShoot(float fireRotation);
///
@@ -606,7 +615,7 @@
if (!_looseShootFlag && _continuousCount > 0 && _delayedTime <= 0 && _attackTimer <= 0)
{
//连发开火
- TriggerFire();
+ TriggerFire(_attackTrigger);
//连发最后一发打完了
if (Attribute.ManualBeLoaded && _continuousCount <= 0)
{
@@ -647,21 +656,25 @@
{
return Master == null && GetParent() == GameApplication.Instance.World.NormalLayer;
}
-
+
///
/// 扳机函数, 调用即视为按下扳机
///
- public void Trigger()
+ /// 按下扳机的角色, 如果传 null, 则视为走火
+ public void Trigger(Role trigger)
{
//这一帧已经按过了, 不需要再按下
if (_triggerFlag) return;
+ _triggerFlag = true;
+ _attackTrigger = trigger;
+
//是否第一帧按下
var justDown = _downTimer == 0;
if (_beLoadedState == 0 || _beLoadedState == -1) //需要执行上膛操作
{
- if (justDown && !Reloading)
+ if (justDown && !Reloading && Master != null)
{
if (CurrAmmo <= 0)
{
@@ -731,7 +744,7 @@
else if (CurrAmmo <= 0) //子弹不够
{
fireFlag = false;
- if (justDown)
+ if (justDown && Master != null)
{
//第一帧按下, 触发换弹
Reload();
@@ -767,7 +780,7 @@
else
{
//开火
- TriggerFire();
+ TriggerFire(_attackTrigger);
//非连射模式
if (!Attribute.ContinuousShoot && Attribute.ManualBeLoaded && _continuousCount <= 0)
@@ -783,8 +796,6 @@
}
}
-
- _triggerFlag = true;
}
///
@@ -845,7 +856,7 @@
_looseShootFlag = false;
if (_chargeTime >= Attribute.MinChargeTime) //判断蓄力是否够了
{
- TriggerFire();
+ TriggerFire(_attackTrigger);
//非连射模式
if (!Attribute.ContinuousShoot && Attribute.ManualBeLoaded && _continuousCount <= 0)
{
@@ -866,7 +877,7 @@
///
/// 触发开火
///
- private void TriggerFire()
+ private void TriggerFire(Role trigger)
{
_noAttackTime = 0;
@@ -931,11 +942,15 @@
if (Master != null)
{
bulletCount = Master.RoleState.CallCalcBulletCountEvent(this, bulletCount);
- fireRotation += Mathf.DegToRad(Master.MountPoint.RealRotationDegrees);
+ fireRotation += Master.MountPoint.RealRotation;
+ }
+ else
+ {
+ fireRotation += GlobalRotation;
}
//创建子弹
- for (int i = 0; i < bulletCount; i++)
+ for (var i = 0; i < bulletCount; i++)
{
//发射子弹
OnShoot(fireRotation);
@@ -946,16 +961,23 @@
//武器的旋转角度
tempAngle -= Attribute.UpliftAngle;
- RotationDegrees = tempAngle;
_fireAngle = tempAngle;
- //武器身位置
- var max = Mathf.Abs(Mathf.Max(Attribute.MaxBacklash, Attribute.MinBacklash));
- _currBacklashLength = Mathf.Clamp(
- _currBacklashLength - Utils.Random.RandomRangeFloat(Attribute.MinBacklash, Attribute.MaxBacklash),
- -max, max
- );
- Position = new Vector2(_currBacklashLength, 0).Rotated(Rotation);
+ if (Master != null) //是否被拾起
+ {
+ //武器身位置
+ var max = Mathf.Abs(Mathf.Max(Attribute.MaxBacklash, Attribute.MinBacklash));
+ _currBacklashLength = Mathf.Clamp(
+ _currBacklashLength - Utils.Random.RandomRangeFloat(Attribute.MinBacklash, Attribute.MaxBacklash),
+ -max, max
+ );
+ Position = new Vector2(_currBacklashLength, 0).Rotated(Rotation);
+ RotationDegrees = tempAngle;
+ }
+ else
+ {
+
+ }
}
///
@@ -1632,6 +1654,11 @@
public void OnRemoveItem()
{
+ //要重置部分重要属性属性
+ if (Master.IsAi)
+ {
+ _triggerTimer = 0;
+ }
GetParent().RemoveChild(this);
CollisionLayer = _tempLayer;
_weaponAttribute = _playerWeaponAttribute;
@@ -1716,10 +1743,19 @@
///
protected ActivityObject ThrowShell(string shellId, float speedScale = 1)
{
- var shellPosition = (Master != null ? Master.MountPoint.Position : Position) + ShellPoint.Position;
var startPos = ShellPoint.GlobalPosition;
- var startHeight = -shellPosition.Y;
- startPos.Y += startHeight;
+ float startHeight;
+ if (Master != null)
+ {
+ var shellPosition = (Master != null ? Master.MountPoint.Position : Position) + ShellPoint.Position;
+ startHeight = -shellPosition.Y;
+ startPos.Y += startHeight;
+ }
+ else
+ {
+ startHeight = Altitude;
+ }
+
var direction = GlobalRotationDegrees + Utils.Random.RandomRangeInt(-30, 30) + 180;
var verticalSpeed = Utils.Random.RandomRangeInt((int)(60 * speedScale), (int)(120 * speedScale));
var velocity = new Vector2(Utils.Random.RandomRangeInt((int)(20 * speedScale), (int)(60 * speedScale)), 0).Rotated(direction * Mathf.Pi / 180);
@@ -1755,15 +1791,18 @@
distance = Master.RoleState.CallCalcBulletDistanceEvent(this, distance);
deviationAngle = Master.RoleState.CallCalcBulletDeviationAngleEvent(this, deviationAngle);
}
+
+ var attackLayer = _attackTrigger != null ? _attackTrigger.AttackLayer : GetAttackLayer();
//创建子弹
var bullet = Create(bulletId);
bullet.Init(
+ _attackTrigger,
this,
speed,
distance,
FirePoint.GlobalPosition,
fireRotation + Mathf.DegToRad(deviationAngle),
- GetAttackLayer()
+ attackLayer
);
bullet.MinHarm = Attribute.BulletMinHarm;
bullet.MaxHarm = Attribute.BulletMaxHarm;
diff --git a/DungeonShooting_Godot/src/game/camera/GameCamera.cs b/DungeonShooting_Godot/src/game/camera/GameCamera.cs
index 960c39a..4d7918d 100644
--- a/DungeonShooting_Godot/src/game/camera/GameCamera.cs
+++ b/DungeonShooting_Godot/src/game/camera/GameCamera.cs
@@ -29,6 +29,11 @@
public bool EnableShake { get; set; } = true;
///
+ /// 镜头跟随鼠标进度 (0 - 1)
+ ///
+ public float FollowsMouseAmount = 0.15f;
+
+ ///
/// 相机跟随目标
///
private Role _followTarget;
@@ -77,13 +82,15 @@
var mousePosition = InputManager.CursorPosition;
var targetPosition = _followTarget.GlobalPosition;
Vector2 targetPos;
- if (targetPosition.DistanceSquaredTo(mousePosition) >= 39999.992F) // >= (60 / 0.3f) * (60 / 0.3f)
+ //if (targetPosition.DistanceSquaredTo(mousePosition) >= 39999.992F) // >= (60 / 0.3f) * (60 / 0.3f)
+ if (targetPosition.DistanceSquaredTo(mousePosition) >= (60 / FollowsMouseAmount) * (60 / FollowsMouseAmount))
{
targetPos = targetPosition.MoveToward(mousePosition, 60);
}
else
{
- targetPos = targetPosition.Lerp(mousePosition, 0.3f); //这里的0.3就是上面的 (60 / 0.3f) * (60 / 0.3f) 中的 0.3
+ //targetPos = targetPosition.Lerp(mousePosition, 0.3f); //这里的0.3就是上面的 (60 / 0.3f) * (60 / 0.3f) 中的 0.3
+ targetPos = targetPosition.Lerp(mousePosition, FollowsMouseAmount);
}
_camPos = _camPos.Lerp(targetPos, 20 * newDelta);
GlobalPosition = _camPos.Round();
diff --git a/DungeonShooting_Godot/src/game/manager/MapProjectManager.cs b/DungeonShooting_Godot/src/game/manager/MapProjectManager.cs
index 77ae412..0076005 100644
--- a/DungeonShooting_Godot/src/game/manager/MapProjectManager.cs
+++ b/DungeonShooting_Godot/src/game/manager/MapProjectManager.cs
@@ -30,7 +30,8 @@
#if TOOLS
CustomMapPath = GameConfig.RoomTileDir;
#else
- CustomMapPath = "";
+ CustomMapPath = GameConfig.RoomTileDir;
+ //CustomMapPath = "";
#endif
EventManager.AddEventListener(EventEnum.OnEditorSave, OnRoomSave);
}
diff --git a/DungeonShooting_Godot/src/game/ui/bottomTips/BottomTipsPanel.cs b/DungeonShooting_Godot/src/game/ui/bottomTips/BottomTipsPanel.cs
index d615eee..ff23c3e 100644
--- a/DungeonShooting_Godot/src/game/ui/bottomTips/BottomTipsPanel.cs
+++ b/DungeonShooting_Godot/src/game/ui/bottomTips/BottomTipsPanel.cs
@@ -20,16 +20,7 @@
{
_offsetY = L_Panel.Instance.Position.Y - (Position.Y + Size.Y);
}
-
- public override void OnShowUi()
- {
-
- }
-
- public override void OnHideUi()
- {
-
- }
+
///
/// 执行入场流程
@@ -41,7 +32,10 @@
StopCoroutine(_id);
HideUi();
}
- _id = StartCoroutine(RunAnimation(icon, message));
+ SetIcon(icon);
+ SetMessage(message);
+ _id = StartCoroutine(RunAnimation());
+ ShowUi();
}
///
@@ -60,18 +54,13 @@
S_Label.Instance.Text = message;
}
- private IEnumerator RunAnimation(Texture2D icon, string message)
+ private IEnumerator RunAnimation()
{
//还原位置
var pos = L_Panel.Instance.Position;
pos.Y = Position.Y + Size.Y + _offsetY;
L_Panel.Instance.Position = pos;
-
- SetIcon(icon);
- SetMessage(message);
-
- yield return 0;
- ShowUi();
+
L_Panel.Instance.ResetSize();
yield return 0;
//重新计算中心点