浏览代码

:lipstick: Display the menu when player is out of bound

DricomDragon 1 年之前
父节点
当前提交
d6727e0b8f

+ 9 - 0
godot/component/ui/victory/victory_menu.gd

@@ -1,6 +1,10 @@
 extends VSplitContainer
 
 
+func _ready() -> void:
+	set_process_input(false) # Otherwise pause is disabled
+
+
 func _input(event: InputEvent) -> void:
 	if event.is_action_released("ui_pause"):
 		# Prevent title screen to be paused
@@ -16,4 +20,9 @@ func _on_quit_button_pressed():
 
 
 func _on_visibility_changed():
+	set_process_input(true)
 	%TitleButton.grab_focus()
+
+
+func _on_bottom_limit_area_body_shape_entered(_body_rid, _body, _body_shape_index, _local_shape_index) -> void:
+	show()

+ 0 - 2
godot/component/ui/victory/victory_menu.tscn

@@ -9,7 +9,6 @@ action = &"ui_cancel"
 events = [SubResource("InputEventAction_ucj0l")]
 
 [node name="VictoryMenu" type="VSplitContainer"]
-process_mode = 3
 visible = false
 anchors_preset = 15
 anchor_right = 1.0
@@ -36,7 +35,6 @@ horizontal_alignment = 1
 autowrap_mode = 2
 
 [node name="Buttons" type="VBoxContainer" parent="."]
-process_mode = 2
 layout_mode = 2
 size_flags_horizontal = 4
 size_flags_vertical = 4

+ 4 - 0
godot/flow/control/local_input/local_input.gd

@@ -30,5 +30,9 @@ func _on_title_screen_start_game() -> void:
 	_enable()
 
 
+func _on_victory_menu_visibility_changed() -> void:
+	queue_free()
+
+
 func _enable() -> void:
 	set_process_mode(Node.PROCESS_MODE_PAUSABLE)

+ 16 - 1
godot/run/levels/infinite_level.tscn

@@ -1,4 +1,4 @@
-[gd_scene load_steps=25 format=3 uid="uid://7ivipmwaw24t"]
+[gd_scene load_steps=26 format=3 uid="uid://7ivipmwaw24t"]
 
 [ext_resource type="Texture2D" uid="uid://cgwafs6ukpm7y" path="res://component/entity/ground/ground051.jpg" id="1_3ytcp"]
 [ext_resource type="Script" path="res://run/levels/camera_tracker.gd" id="1_qdm47"]
@@ -49,6 +49,8 @@ ambient_light_color = Color(1, 1, 1, 1)
 ambient_light_sky_contribution = 0.0
 ambient_light_energy = 0.5
 
+[sub_resource type="WorldBoundaryShape3D" id="WorldBoundaryShape3D_cdiox"]
+
 [node name="InfiniteLevel" type="Node3D"]
 
 [node name="Ground" type="StaticBody3D" parent="."]
@@ -204,6 +206,17 @@ environment = SubResource("Environment_jdyq3")
 transform = Transform3D(0.769065, 0.23434, -0.594663, 0, 0.930366, 0.366631, 0.639171, -0.281963, 0.715512, 0, 12.4629, 0)
 light_energy = 0.8
 
+[node name="Limits" type="Node3D" parent="."]
+
+[node name="BottomLimitArea" type="Area3D" parent="Limits"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -100, 0)
+collision_mask = 2
+input_ray_pickable = false
+monitorable = false
+
+[node name="BottomLimitShape" type="CollisionShape3D" parent="Limits/BottomLimitArea"]
+shape = SubResource("WorldBoundaryShape3D_cdiox")
+
 [connection signal="focus_required" from="MainWalker" to="CameraTracker" method="_on_focus_required"]
 [connection signal="got_in" from="MainWalker" to="MusicPlayer" method="_on_driver_got_in"]
 [connection signal="got_out" from="MainWalker" to="MusicPlayer" method="_on_driver_got_out"]
@@ -211,3 +224,5 @@ light_energy = 0.8
 [connection signal="get_in_action" from="MainWalker/Control" to="MainWalker" method="_on_get_in_action"]
 [connection signal="main_action" from="MainWalker/Control" to="MainWalker" method="_on_main_action"]
 [connection signal="start_game" from="UI/TitleScreen" to="MainWalker/Control" method="_on_title_screen_start_game"]
+[connection signal="visibility_changed" from="UI/VictoryMenu" to="MainWalker/Control" method="_on_victory_menu_visibility_changed"]
+[connection signal="body_shape_entered" from="Limits/BottomLimitArea" to="UI/VictoryMenu" method="_on_bottom_limit_area_body_shape_entered"]