diff --git a/DungeonShooting_Godot/resource/theme/mainTheme.tres b/DungeonShooting_Godot/resource/theme/mainTheme.tres
index a3f2a1e..2b30ad8 100644
--- a/DungeonShooting_Godot/resource/theme/mainTheme.tres
+++ b/DungeonShooting_Godot/resource/theme/mainTheme.tres
@@ -352,7 +352,7 @@
[sub_resource type="ImageTexture" id="58"]
-[sub_resource type="Image" id="Image_55nhs"]
+[sub_resource type="Image" id="Image_rkg8f"]
data = {
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 39, 255, 255, 255, 67, 255, 255, 255, 67, 255, 255, 255, 39, 255, 255, 255, 1, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 39, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 39, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 66, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 66, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 66, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 66, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 39, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 75, 255, 255, 255, 39, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 1, 255, 255, 255, 39, 255, 255, 255, 67, 255, 255, 255, 67, 255, 255, 255, 39, 255, 255, 255, 1, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
"format": "RGBA8",
@@ -362,7 +362,7 @@
}
[sub_resource type="ImageTexture" id="60"]
-image = SubResource("Image_55nhs")
+image = SubResource("Image_rkg8f")
[sub_resource type="StyleBoxTexture" id="61"]
content_margin_left = 2.0
@@ -372,7 +372,7 @@
texture = SubResource("60")
region_rect = Rect2(0, 0, 12, 12)
-[sub_resource type="Image" id="Image_8hfn8"]
+[sub_resource type="Image" id="Image_p7mig"]
data = {
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 247, 247, 247, 0, 248, 248, 248, 0, 248, 248, 248, 0, 247, 247, 247, 0, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 191, 191, 191, 4, 247, 247, 247, 98, 248, 248, 248, 167, 248, 248, 248, 167, 247, 247, 247, 98, 191, 191, 191, 4, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 247, 247, 0, 247, 247, 247, 97, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 247, 247, 247, 97, 247, 247, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 248, 248, 0, 248, 248, 248, 164, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 164, 248, 248, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 248, 248, 0, 248, 248, 248, 164, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 164, 248, 248, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 247, 247, 0, 247, 247, 247, 97, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 248, 248, 248, 186, 247, 247, 247, 97, 247, 247, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 191, 191, 191, 4, 247, 247, 247, 98, 248, 248, 248, 167, 248, 248, 248, 167, 247, 247, 247, 98, 191, 191, 191, 4, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 191, 191, 0, 247, 247, 247, 0, 248, 248, 248, 0, 248, 248, 248, 0, 247, 247, 247, 0, 191, 191, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
"format": "RGBA8",
@@ -382,7 +382,7 @@
}
[sub_resource type="ImageTexture" id="63"]
-image = SubResource("Image_8hfn8")
+image = SubResource("Image_p7mig")
[sub_resource type="StyleBoxTexture" id="64"]
content_margin_left = 2.0
@@ -392,7 +392,7 @@
texture = SubResource("63")
region_rect = Rect2(0, 0, 12, 12)
-[sub_resource type="Image" id="Image_73ey7"]
+[sub_resource type="Image" id="Image_whaq4"]
data = {
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 127, 127, 127, 4, 173, 173, 173, 97, 173, 173, 173, 166, 173, 173, 173, 166, 173, 173, 173, 97, 127, 127, 127, 4, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 172, 172, 0, 172, 172, 172, 96, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 172, 172, 172, 96, 172, 172, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 173, 173, 0, 173, 173, 173, 163, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 163, 173, 173, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 173, 173, 0, 173, 173, 173, 163, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 163, 173, 173, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 172, 172, 0, 172, 172, 172, 96, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 173, 173, 173, 185, 172, 172, 172, 96, 172, 172, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 127, 127, 127, 4, 173, 173, 173, 97, 173, 173, 173, 166, 173, 173, 173, 166, 173, 173, 173, 97, 127, 127, 127, 4, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 173, 173, 173, 0, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
"format": "RGBA8",
@@ -402,7 +402,7 @@
}
[sub_resource type="ImageTexture" id="66"]
-image = SubResource("Image_73ey7")
+image = SubResource("Image_whaq4")
[sub_resource type="StyleBoxTexture" id="67"]
content_margin_left = 2.0
@@ -412,7 +412,7 @@
texture = SubResource("66")
region_rect = Rect2(0, 0, 12, 12)
-[sub_resource type="Image" id="Image_t6clc"]
+[sub_resource type="Image" id="Image_acsc7"]
data = {
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 16, 255, 255, 255, 16, 255, 255, 255, 4, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 16, 255, 255, 255, 21, 255, 255, 255, 21, 255, 255, 255, 16, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 16, 255, 255, 255, 21, 255, 255, 255, 21, 255, 255, 255, 16, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 4, 255, 255, 255, 16, 255, 255, 255, 16, 255, 255, 255, 4, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
"format": "RGBA8",
@@ -422,7 +422,7 @@
}
[sub_resource type="ImageTexture" id="69"]
-image = SubResource("Image_t6clc")
+image = SubResource("Image_acsc7")
[sub_resource type="StyleBoxTexture" id="70"]
content_margin_left = 0.0
@@ -446,7 +446,7 @@
content_margin_right = 4.0
content_margin_bottom = 4.0
-[sub_resource type="Image" id="Image_7qvk8"]
+[sub_resource type="Image" id="Image_te5yy"]
data = {
"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 76, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 76, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 76, 255, 255, 255, 228, 255, 255, 255, 188, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 188, 255, 255, 255, 228, 255, 255, 255, 76, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 18, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 187, 255, 255, 255, 17, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 187, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 18, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 185, 255, 255, 255, 17, 255, 255, 255, 17, 255, 255, 255, 186, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 190, 255, 255, 255, 229, 255, 255, 255, 185, 255, 255, 255, 185, 255, 255, 255, 229, 255, 255, 255, 189, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 191, 255, 255, 255, 229, 255, 255, 255, 229, 255, 255, 255, 190, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 187, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 187, 255, 255, 255, 229, 255, 255, 255, 188, 255, 255, 255, 18, 255, 255, 255, 19, 255, 255, 255, 188, 255, 255, 255, 229, 255, 255, 255, 186, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 17, 255, 255, 255, 185, 255, 255, 255, 229, 255, 255, 255, 189, 255, 255, 255, 19, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 189, 255, 255, 255, 229, 255, 255, 255, 185, 255, 255, 255, 17, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 76, 255, 255, 255, 229, 255, 255, 255, 190, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 190, 255, 255, 255, 229, 255, 255, 255, 76, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 77, 255, 255, 255, 19, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 19, 255, 255, 255, 77, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
"format": "RGBA8",
@@ -456,7 +456,7 @@
}
[sub_resource type="ImageTexture" id="56"]
-image = SubResource("Image_7qvk8")
+image = SubResource("Image_te5yy")
[sub_resource type="StyleBoxFlat" id="57"]
content_margin_left = 6.0
diff --git a/DungeonShooting_Godot/scene/Main.tscn b/DungeonShooting_Godot/scene/Main.tscn
index 0b7e589..fd55225 100644
--- a/DungeonShooting_Godot/scene/Main.tscn
+++ b/DungeonShooting_Godot/scene/Main.tscn
@@ -39,6 +39,8 @@
anchor_bottom = 1.0
offset_right = -1438.0
offset_bottom = -808.0
+grow_horizontal = 2
+grow_vertical = 2
scale = Vector2(4, 4)
stretch = true
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityFallData.cs b/DungeonShooting_Godot/src/framework/activity/ActivityFallData.cs
new file mode 100644
index 0000000..0d6c002
--- /dev/null
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityFallData.cs
@@ -0,0 +1,19 @@
+using Godot;
+
+public class ActivityFallData
+{
+ //----------- 用于记录原始信息 --------------
+ public bool UseOrigin = true;
+ public Shape2D OriginShape;
+ public Vector2 OriginPosition;
+ public float OriginRotation;
+ public Vector2 OriginScale;
+ public int OriginZIndex;
+ public Vector2 OriginSpritePosition;
+ public bool OriginCollisionEnable;
+ public Vector2 OriginCollisionPosition;
+ public float OriginCollisionRotation;
+ public Vector2 OriginCollisionScale;
+ public uint OriginCollisionMask;
+ public uint OriginCollisionLayer;
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
index caee3da..b8a65e0 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs
@@ -45,7 +45,7 @@
///
/// 是否正在投抛过程中
///
- public bool IsThrowing => _fallData != null && !_fallData.IsFallOver;
+ public bool IsThrowing => _fallData != null && !_isFallOver;
///
/// 阴影偏移
@@ -83,7 +83,7 @@
}
///
- /// 当前物体的海拔高度, 如果大于0, 则会做自由落体运动
+ /// 当前物体的海拔高度, 如果大于0, 则会做自由落体运动, 也就是执行投抛代码
///
public float Altitude { get; set; }
@@ -93,10 +93,42 @@
public float VerticalSpeed { get; set; }
///
- /// 物体旋转速度, 角度制
+ /// 物体投抛时旋转速度, 角度制
///
- public float RotationDegreesSpeed { get; set; }
+ public float ThrowRotationDegreesSpeed { get; set; }
+
+ ///
+ /// 落地之后是否回弹
+ ///
+ public bool Bounce { get; set; } = true;
+
+ ///
+ /// 物体下坠回弹的强度
+ ///
+ public float BounceStrength { get; set; } = 0.5f;
+
+ ///
+ /// 物体下坠回弹后的运动速度衰减量
+ ///
+ public float BounceSpeed { get; set; } = 0.75f;
+ ///
+ /// 投抛状态下物体碰撞器大小, 如果为 (-1, -1), 则默认使用 AnimatedSprite 的默认动画第一帧的大小
+ ///
+ public Vector2 ThrowCollisionSize { get; set; } = new Vector2(-1, -1);
+
+ //是否是第一次下坠
+ private bool _firstFall = true;
+
+ //下坠是否已经结束
+ private bool _isFallOver = true;
+
+ //下坠状态碰撞器形状
+ private RectangleShape2D _throwRectangleShape;
+
+ //投抛移动速率
+ private ExternalForce _throwForce;
+
//组件集合
private List> _components = new List>();
//是否初始化阴影
@@ -114,7 +146,7 @@
private ShaderMaterial _blendShaderMaterial;
//存储投抛该物体时所产生的数据
- private ActivityThrowData _fallData;
+ private ActivityFallData _fallData;
//所在层级
private RoomLayerEnum _currLayer;
@@ -452,36 +484,52 @@
///
/// 将该节点投抛出去
///
- /// 碰撞器大小
- /// 起始坐标 (全局)
- /// 起始高度
- /// 投抛角度 (0-360)
- /// 移动速度
- /// 下坠速度
+ /// 初始高度
/// 旋转速度
- /// 落地时是否回弹
- /// 落地回弹力度, 1为不消耗能量, 值越小回弹力度越小
- /// 落地回弹后的速度, 1为不消速度, 值越小回弹速度消耗越大
- public void Throw(Vector2 size, Vector2 start, float startHeight, float direction, float xSpeed,
- float ySpeed, float rotate, bool bounce = false, float bounceStrength = 0.5f, float bounceSpeed = 0.8f)
+ /// 移动速率
+ /// 纵轴速度
+ public void Throw(float altitude, float verticalSpeed, Vector2 velocity, float rotate)
{
- GlobalPosition = start;
- VerticalSpeed = ySpeed;
- RotationDegreesSpeed = rotate;
- Altitude = startHeight;
- // _fallData.Bounce = bounce;
- // _fallData.BounceStrength = bounceStrength;
- // _fallData.BounceSpeed = bounceSpeed;
- //
- // _fallData.RectangleShape.Size = _fallData.Size * 0.5f;
+ var parent = GetParent();
+ if (parent == null || parent != GameApplication.Instance.RoomManager.YSortLayer)
+ {
+ GameApplication.Instance.RoomManager.YSortLayer.AddChild(this);
+ }
+
+ Altitude = altitude;
+ VerticalSpeed = verticalSpeed;
+ ThrowRotationDegreesSpeed = rotate;
+ if (_throwForce != null)
+ {
+ MoveController.RemoveForce(_throwForce);
+ }
+
+ _throwForce = new ExternalForce("throw");
+ _throwForce.Velocity = velocity;
+ MoveController.AddConstantForce(_throwForce);
}
///
+ /// 将该节点投抛出去
+ ///
+ /// 初始位置
+ /// 初始高度
+ /// 旋转速度
+ /// 移动速率
+ /// 纵轴速度
+ public void Throw(Vector2 position, float altitude, float verticalSpeed, Vector2 velocity, float rotate)
+ {
+ GlobalPosition = position;
+ Throw(altitude, verticalSpeed, velocity, rotate);
+ }
+
+
+ ///
/// 强制停止投抛运动
///
public void StopThrow()
{
- _fallData.IsFallOver = true;
+ _isFallOver = true;
RestoreCollision();
}
@@ -574,29 +622,32 @@
{
if (_fallData == null)
{
- _fallData = new ActivityThrowData();
+ _fallData = new ActivityFallData();
}
- if (_fallData.IsFallOver) // 没有处于下坠状态, 则进入下坠状态
+ if (_isFallOver) // 没有处于下坠状态, 则进入下坠状态
{
SetFallCollision();
- _fallData.IsFallOver = false;
- _fallData.FirstFall = true;
- _fallData.Size = new Vector2(10, 10);
- _fallData.Bounce = true;
- _fallData.BounceStrength = 0.5f;
- _fallData.BounceSpeed = 0.8f;
+ _isFallOver = false;
+ _firstFall = true;
_hasResilienceVerticalSpeed = false;
_resilienceVerticalSpeed = 0;
- _fallData.RectangleShape.Size = _fallData.Size * 0.5f;
+ if (ThrowCollisionSize.X == -1f && ThrowCollisionSize.Y == -1)
+ {
+ _throwRectangleShape.Size = GetDefaultTexture().GetSize();
+ }
+ else
+ {
+ _throwRectangleShape.Size = ThrowCollisionSize;
+ }
Throw();
}
else
{
- GlobalRotationDegrees = GlobalRotationDegrees + RotationDegreesSpeed * newDelta;
+ GlobalRotationDegrees = GlobalRotationDegrees + ThrowRotationDegreesSpeed * newDelta;
CalcThrowAnimatedPosition();
var ysp = VerticalSpeed;
@@ -623,107 +674,51 @@
//落地判断
if (Altitude <= 0)
{
- _fallData.IsFallOver = true;
+ _isFallOver = true;
Altitude = 0;
//第一次接触地面
- if (_fallData.FirstFall)
+ if (_firstFall)
{
- _fallData.FirstFall = false;
+ _firstFall = false;
OnFirstFallToGround();
}
+ MoveController.ScaleAllForce(BounceSpeed);
//如果落地高度不够低, 再抛一次
- if (_fallData.Bounce && (!_hasResilienceVerticalSpeed || _resilienceVerticalSpeed > 1))
+ if (Bounce && (!_hasResilienceVerticalSpeed || _resilienceVerticalSpeed > 1))
{
- Velocity = Velocity * _fallData.BounceSpeed;
if (!_hasResilienceVerticalSpeed)
{
_hasResilienceVerticalSpeed = true;
- _resilienceVerticalSpeed = -VerticalSpeed * _fallData.BounceStrength;
+ _resilienceVerticalSpeed = -VerticalSpeed * BounceStrength;
}
else
{
- _resilienceVerticalSpeed = _resilienceVerticalSpeed * _fallData.BounceStrength;
+ _resilienceVerticalSpeed = _resilienceVerticalSpeed * BounceStrength;
}
VerticalSpeed = _resilienceVerticalSpeed;
- RotationDegreesSpeed = RotationDegreesSpeed * _fallData.BounceStrength;
- _fallData.IsFallOver = false;
+ ThrowRotationDegreesSpeed = ThrowRotationDegreesSpeed * BounceStrength;
+ _isFallOver = false;
OnFallToGround();
}
else //结束
{
VerticalSpeed = 0;
+
+ if (_throwForce != null)
+ {
+ MoveController.RemoveForce(_throwForce);
+ _throwForce = null;
+ }
+
OnFallToGround();
ThrowOver();
}
}
}
}
-
- /*
- //投抛计算
- if (_fallData != null && !_fallData.IsFallOver)
- {
- GlobalRotationDegrees = GlobalRotationDegrees + _fallData.RotateSpeed * newDelta;
- CalcThrowAnimatedPosition();
-
- var ysp = _fallData.YSpeed;
-
- Altitude += _fallData.YSpeed * newDelta;
- _fallData.YSpeed -= GameConfig.G * newDelta;
-
- //当高度大于16时, 显示在所有物体上
- if (Altitude >= 16)
- {
- AnimatedSprite.ZIndex = 20;
- }
- else
- {
- AnimatedSprite.ZIndex = 0;
- }
-
- //达到最高点
- if (ysp * _fallData.YSpeed < 0)
- {
- OnThrowMaxHeight(Altitude);
- }
-
- //落地判断
- if (Altitude <= 0)
- {
- _fallData.IsFallOver = true;
-
- //第一次接触地面
- if (_fallData.FirstFallOver)
- {
- _fallData.FirstFallOver = false;
- OnFirstFallToGround();
- }
-
- //如果落地高度不够低, 再抛一次
- if (_fallData.StartYSpeed > 1 && _fallData.Bounce)
- {
- _fallData.StartPosition = Position;
- Altitude = 0;
- _fallData.XSpeed = _fallData.StartXSpeed = _fallData.StartXSpeed * _fallData.BounceSpeed;
- _fallData.YSpeed = _fallData.StartYSpeed = _fallData.StartYSpeed * _fallData.BounceStrength;
- _fallData.RotateSpeed = _fallData.RotateSpeed * _fallData.BounceStrength;
- _fallData.ThrowForce.Velocity *= _fallData.BounceSpeed;
- _fallData.FirstFallOver = false;
- _fallData.IsFallOver = false;
-
- OnFallToGround();
- }
- else //结束
- {
- OnFallToGround();
- ThrowOver();
- }
- }
- }
- */
//阴影
if (ShadowSprite.Visible)
@@ -923,7 +918,7 @@
ShadowSprite.Rotation = 0;
//阴影位置计算
var pos = AnimatedSprite.GlobalPosition;
- if (_fallData != null && !_fallData.IsFallOver)
+ if (_fallData != null && !_isFallOver)
{
ShadowSprite.GlobalPosition = new Vector2(pos.X + ShadowOffset.X, pos.Y + ShadowOffset.Y + Altitude);
}
@@ -1027,12 +1022,12 @@
_fallData.OriginCollisionMask = CollisionMask;
_fallData.OriginCollisionLayer = CollisionLayer;
- if (_fallData.RectangleShape == null)
+ if (_throwRectangleShape == null)
{
- _fallData.RectangleShape = new RectangleShape2D();
+ _throwRectangleShape = new RectangleShape2D();
}
- Collision.Shape = _fallData.RectangleShape;
+ Collision.Shape = _throwRectangleShape;
Collision.Position = Vector2.Zero;
Collision.Rotation = 0;
Collision.Scale = Vector2.One;
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityThrowData.cs b/DungeonShooting_Godot/src/framework/activity/ActivityThrowData.cs
deleted file mode 100644
index 3eeacf4..0000000
--- a/DungeonShooting_Godot/src/framework/activity/ActivityThrowData.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-using Godot;
-
-public class ActivityThrowData
-{
- ///
- /// 是否是第一次下坠
- ///
- public bool FirstFall = true;
-
- ///
- /// 下坠是否已经结束
- ///
- public bool IsFallOver = true;
-
- ///
- /// 物体大小
- ///
- public Vector2 Size = Vector2.One;
-
- ///
- /// 碰撞器形状
- ///
- public RectangleShape2D RectangleShape;
-
- ///
- /// 落地之后是否弹跳
- ///
- public bool Bounce;
-
- ///
- /// 回弹的强度
- ///
- public float BounceStrength = 0.5f;
-
- ///
- /// 回弹后的速度
- ///
- public float BounceSpeed = 0.8f;
-
- //----------- 用于记录原始信息 --------------
- public bool UseOrigin = true;
- public Shape2D OriginShape;
- public Vector2 OriginPosition;
- public float OriginRotation;
- public Vector2 OriginScale;
- public int OriginZIndex;
- public Vector2 OriginSpritePosition;
- public bool OriginCollisionEnable;
- public Vector2 OriginCollisionPosition;
- public float OriginCollisionRotation;
- public Vector2 OriginCollisionScale;
- public uint OriginCollisionMask;
- public uint OriginCollisionLayer;
-}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/framework/activity/ExternalForce.cs b/DungeonShooting_Godot/src/framework/activity/ExternalForce.cs
index cfd4ce9..e6b1d2f 100644
--- a/DungeonShooting_Godot/src/framework/activity/ExternalForce.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ExternalForce.cs
@@ -22,7 +22,7 @@
public float Resistance { get; set; } = 5;
///
- /// 当速度到达 0 后是否自动销毁
+ /// 当速度到达 0 后是否自动销毁, 默认 true
///
public bool AutoDestroy { get; set; } = true;
diff --git a/DungeonShooting_Godot/src/framework/activity/components/MoveController.cs b/DungeonShooting_Godot/src/framework/activity/components/MoveController.cs
index d7b3b59..3d84323 100644
--- a/DungeonShooting_Godot/src/framework/activity/components/MoveController.cs
+++ b/DungeonShooting_Godot/src/framework/activity/components/MoveController.cs
@@ -32,6 +32,32 @@
private Vector2 _basisVelocity = Vector2.Zero;
///
+ /// 缩放所有力对象, 包括基础速率
+ ///
+ public void ScaleAllForce(float scale)
+ {
+ foreach (var externalForce in _forceList)
+ {
+ externalForce.Velocity *= scale;
+ }
+
+ BasisVelocity *= scale;
+ }
+
+ ///
+ /// 设置所有力对象, 包括基础速率
+ ///
+ public void SetAllForce(Vector2 value)
+ {
+ foreach (var externalForce in _forceList)
+ {
+ externalForce.Velocity = value;
+ }
+
+ BasisVelocity = value;
+ }
+
+ ///
/// 获取所有外力对象
///
public ExternalForce[] GetAllForce()
@@ -53,11 +79,12 @@
}
///
- /// 根据名称添加一个外力, 并返回创建的外力的对象, 如果存在这个名称的外力, 移除之前的外力
+ /// 根据名称添加一个外力, 并返回创建的外力的对象, 如果存在这个名称的外力, 移除之前的外力, 当速率变为 0 时不会自动销毁
///
public ExternalForce AddConstantForce(string name)
{
var f = new ExternalForce(name);
+ f.AutoDestroy = false;
AddConstantForce(f);
return f;
}
@@ -146,18 +173,27 @@
//先调用更新
var externalForces = _forceList.ToArray();
- foreach (var fore in externalForces)
+ for (var i = 0; i < externalForces.Length; i++)
{
- if (fore.Enable)
- fore.PhysicsProcess(delta);
+ var force = externalForces[i];
+ if (force.Enable)
+ {
+ force.PhysicsProcess(delta);
+ //自动销毁
+ if (force.AutoDestroy && force.Velocity == Vector2.Zero)
+ {
+ _forceList.Remove(force);
+ externalForces[i] = null;
+ }
+ }
}
//外力总和
var finallyEf = new Vector2();
- foreach (var fore in externalForces)
+ foreach (var force in externalForces)
{
- if (fore.Enable)
- finallyEf += fore.Velocity;
+ if (force != null && force.Enable)
+ finallyEf += force.Velocity;
}
//最终速率
@@ -180,28 +216,27 @@
}
//调整外力速率
- if (externalForces.Length > 0)
+ for (var i = 0; i < _forceList.Count; i++)
{
- for (var i = 0; i < _forceList.Count; i++)
+ var force = _forceList[i];
+ if (force.Enable)
{
- var force = _forceList[i];
- if (force.Enable)
+ var velocity = force.Velocity;
+ force.Velocity = new Vector2(
+ newVelocity.X == 0f && velocity.X * finallyVelocity.X > 0 ? 0 : velocity.X,
+ newVelocity.Y == 0f && velocity.Y * finallyVelocity.Y > 0 ? 0 : velocity.Y
+ );
+
+ //力速度衰减
+ if (force.Resistance != 0)
{
- var velocity = force.Velocity;
- force.Velocity = new Vector2(
- newVelocity.X == 0f && velocity.X * finallyVelocity.X > 0 ? 0 : velocity.X,
- newVelocity.Y == 0f && velocity.Y * finallyVelocity.Y > 0 ? 0 : velocity.Y
- );
+ force.Velocity = force.Velocity.MoveToward(Vector2.Zero, force.Resistance * delta);
+ }
- if (force.Resistance != 0)
- {
- force.Velocity = force.Velocity.MoveToward(Vector2.Zero, force.Resistance * delta);
- }
-
- if (force.AutoDestroy && force.Velocity == Vector2.Zero)
- {
- _forceList.RemoveAt(i--);
- }
+ //自动销毁
+ if (force.AutoDestroy && force.Velocity == Vector2.Zero)
+ {
+ _forceList.RemoveAt(i--);
}
}
}
diff --git a/DungeonShooting_Godot/src/game/item/weapon/Weapon.cs b/DungeonShooting_Godot/src/game/item/weapon/Weapon.cs
index c15e166..8d24a04 100644
--- a/DungeonShooting_Godot/src/game/item/weapon/Weapon.cs
+++ b/DungeonShooting_Godot/src/game/item/weapon/Weapon.cs
@@ -192,6 +192,8 @@
CurrAmmo = Attribute.AmmoCapacity;
//剩余弹药量
ResidueAmmo = Mathf.Min(Attribute.StandbyAmmoCapacity + CurrAmmo, Attribute.MaxAmmoCapacity) - CurrAmmo;
+
+ ThrowCollisionSize = new Vector2(20, 15);
}
///
@@ -928,9 +930,7 @@
//播放互动效果
if (flag)
{
- Throw(new Vector2(30, 15), GlobalPosition, 0, 0,
- Utils.RandomRangeInt(-20, 20), Utils.RandomRangeInt(20, 50),
- Utils.RandomRangeInt(-180, 180));
+ Throw(GlobalPosition, 0, Utils.RandomRangeInt(20, 50), Vector2.Zero, Utils.RandomRangeInt(-180, 180));
}
}
else //没有武器
@@ -986,10 +986,10 @@
var startHeight = 6;
var direction = angle + Utils.RandomRangeInt(-20, 20);
- var xf = 20;
+ var velocity = new Vector2(20, 0).Rotated(direction * Mathf.Pi / 180);
var yf = Utils.RandomRangeInt(50, 70);
var rotate = Utils.RandomRangeInt(-90, 90);
- Throw(new Vector2(30, 15), startPosition, startHeight, direction, xf, yf, rotate, true);
+ Throw(startPosition, startHeight, yf, velocity, rotate);
}
protected override void OnThrowOver()
diff --git a/DungeonShooting_Godot/src/game/item/weapon/gun/Gun.cs b/DungeonShooting_Godot/src/game/item/weapon/gun/Gun.cs
index 8711f36..5a2c9f0 100644
--- a/DungeonShooting_Godot/src/game/item/weapon/gun/Gun.cs
+++ b/DungeonShooting_Godot/src/game/item/weapon/gun/Gun.cs
@@ -99,14 +99,14 @@
protected override void OnFire()
{
//创建一个弹壳
+ var startPos = Master.GlobalPosition;
var startHeight = 6;
var direction = GlobalRotationDegrees + Utils.RandomRangeInt(-30, 30) + 180;
- var xf = Utils.RandomRangeInt(20, 60);
- var yf = Utils.RandomRangeInt(60, 120);
+ var verticalSpeed = Utils.RandomRangeInt(60, 120);
+ var velocity = new Vector2(Utils.RandomRangeInt(20, 60), 0).Rotated(direction * Mathf.Pi / 180);
var rotate = Utils.RandomRangeInt(-720, 720);
- var shell = ActivityObject.Create(ActivityIdPrefix.Shell + "0001");
- shell.PutDown(RoomLayerEnum.YSortLayer);
- shell.Throw(new Vector2(10, 5), Master.GlobalPosition, startHeight, direction, xf, yf, rotate, true);
+ var shell = Create(ActivityIdPrefix.Shell + "0001");
+ shell.Throw(startPos, startHeight, verticalSpeed, velocity, rotate);
if (Master == GameApplication.Instance.RoomManager.Player)
{
diff --git a/DungeonShooting_Godot/src/game/item/weapon/gun/Shotgun.cs b/DungeonShooting_Godot/src/game/item/weapon/gun/Shotgun.cs
index 74183ad..1f8d8dd 100644
--- a/DungeonShooting_Godot/src/game/item/weapon/gun/Shotgun.cs
+++ b/DungeonShooting_Godot/src/game/item/weapon/gun/Shotgun.cs
@@ -63,14 +63,14 @@
protected override void OnFire()
{
//创建一个弹壳
- var startPos = GlobalPosition + new Vector2(0, 5);
+ var startPos = Master.GlobalPosition;
var startHeight = 6;
var direction = GlobalRotationDegrees + Utils.RandomRangeInt(-30, 30) + 180;
- var xf = Utils.RandomRangeInt(20, 60);
- var yf = Utils.RandomRangeInt(60, 120);
+ var verticalSpeed = Utils.RandomRangeInt(60, 120);
+ var velocity = new Vector2(Utils.RandomRangeInt(20, 60), 0).Rotated(direction * Mathf.Pi / 180);
var rotate = Utils.RandomRangeInt(-720, 720);
- var shell = ActivityObject.Create(ActivityIdPrefix.Shell + "0001");;
- shell.Throw(new Vector2(5, 10), startPos, startHeight, direction, xf, yf, rotate, true);
+ var shell = Create(ActivityIdPrefix.Shell + "0001");
+ shell.Throw(startPos, startHeight, verticalSpeed, velocity, rotate);
if (Master == GameApplication.Instance.RoomManager.Player)
{
diff --git a/DungeonShooting_Godot/src/game/item/weapon/shell/ShellCase.cs b/DungeonShooting_Godot/src/game/item/weapon/shell/ShellCase.cs
index 58cd68e..aafcb2d 100644
--- a/DungeonShooting_Godot/src/game/item/weapon/shell/ShellCase.cs
+++ b/DungeonShooting_Godot/src/game/item/weapon/shell/ShellCase.cs
@@ -16,11 +16,13 @@
{
AnimationPlayer = GetNode("AnimationPlayer");
ShadowOffset = new Vector2(0, 1);
+ ThrowCollisionSize = new Vector2(5, 5);
}
protected override void OnThrowOver()
{
//AwaitDestroy();
+ MoveController.SetAllForce(Vector2.Zero);
AnimationPlayer.Play("flicker");
}
diff --git a/DungeonShooting_Godot/src/game/room/RoomManager.cs b/DungeonShooting_Godot/src/game/room/RoomManager.cs
index fa2f296..fa9b674 100644
--- a/DungeonShooting_Godot/src/game/room/RoomManager.cs
+++ b/DungeonShooting_Godot/src/game/room/RoomManager.cs
@@ -65,22 +65,21 @@
_dungeonGenerator = new DungeonGenerator();
_dungeonGenerator.Generate();
+ //填充地牢
+ _autoTileConfig = new AutoTileConfig();
+ _dungeonTile = new DungeonTile(TileRoot);
+ _dungeonTile.AutoFillRoomTile(_autoTileConfig, _dungeonGenerator.StartRoom);
- // //填充地牢
- // _autoTileConfig = new AutoTileConfig();
- // _dungeonTile = new DungeonTile(TileRoot);
- // _dungeonTile.AutoFillRoomTile(_autoTileConfig, _dungeonGenerator.StartRoom);
- //
- // //生成寻路网格, 这一步操作只生成过道的导航
- // _dungeonTile.GenerateNavigationPolygon(DungeonTile.AisleFloorMapLayer);
- // //挂载过道导航区域
- // _dungeonTile.MountNavigationPolygon(this);
- // //过道导航区域数据
- // _roomStaticNavigationList.AddRange(_dungeonTile.GetPolygonData());
- // //门导航区域数据
- // _roomStaticNavigationList.AddRange(_dungeonTile.GetConnectDoorPolygonData());
- // //初始化所有房间
- // _dungeonGenerator.EachRoom(InitRoom);
+ //生成寻路网格, 这一步操作只生成过道的导航
+ _dungeonTile.GenerateNavigationPolygon(DungeonTile.AisleFloorMapLayer);
+ //挂载过道导航区域
+ _dungeonTile.MountNavigationPolygon(this);
+ //过道导航区域数据
+ _roomStaticNavigationList.AddRange(_dungeonTile.GetPolygonData());
+ //门导航区域数据
+ _roomStaticNavigationList.AddRange(_dungeonTile.GetConnectDoorPolygonData());
+ //初始化所有房间
+ _dungeonGenerator.EachRoom(InitRoom);
GD.Print("生成地牢用时: " + (DateTime.Now.Ticks - nowTicks) / 10000 + "毫秒");
@@ -97,7 +96,7 @@
var weapon = ActivityObject.Create(ActivityIdPrefix.Weapon + "0001");
weapon.PutDown(RoomLayerEnum.NormalLayer);
- weapon.VerticalSpeed = 100;
+ weapon.Altitude = 32;
// for (int i = 0; i < 10; i++)
// {