From 05614ce307e8224defe017d89a5cb6375837b3bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojte=CC=8Cch=20Struha=CC=81r?= Date: Tue, 13 May 2025 14:38:00 +0200 Subject: [PATCH] Hook up portals together --- antichamber.gd | 28 +++++++++++++++++++++++----- world.tscn | 26 ++++++++++++++++++++------ 2 files changed, 43 insertions(+), 11 deletions(-) diff --git a/antichamber.gd b/antichamber.gd index d4554c9..5d6d9ee 100644 --- a/antichamber.gd +++ b/antichamber.gd @@ -1,11 +1,29 @@ extends Node3D +@onready var entry_portal: Portal3D = %EntryPortal +@onready var win_portal: Portal3D = %WinPortal +@onready var blue_portal: Portal3D = %BluePortal +@onready var red_portal: Portal3D = %RedPortal + +@onready var win_indicator: Node3D = %WinIndicator + +var red_completed: bool = false +var blue_completed: bool = false -# Called when the node enters the scene tree for the first time. func _ready() -> void: - pass # Replace with function body. + win_indicator.visible = false +func _on_blue_portal_on_teleport(node: Node3D) -> void: + blue_completed = true + entry_portal.exit_portal = blue_portal + check_completion() -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: - pass +func _on_red_portal_on_teleport(node: Node3D) -> void: + red_completed = true + entry_portal.exit_portal = red_portal + check_completion() + +func check_completion() -> void: + if blue_completed and red_completed: + entry_portal.exit_portal = win_portal + win_indicator.visible = true diff --git a/world.tscn b/world.tscn index 017799e..8a75da2 100644 --- a/world.tscn +++ b/world.tscn @@ -62,7 +62,7 @@ script = ExtResource("1_2o6r5") environment = SubResource("Environment_tlwt5") [node name="Player" type="CharacterBody3D" parent="." node_paths=PackedStringArray("camera")] -transform = Transform3D(-5.96046e-08, 0, -1, 0, 1, 0, 1, 0, -5.96046e-08, -6.02657, 1.05097, 0.057735) +transform = Transform3D(1, 0, -1.58933e-08, 0, 1, 0, 1.58933e-08, 0, 1, -4.42657, 1.05097, 10.9577) collision_layer = 32769 floor_max_angle = 0.872665 script = ExtResource("1_f3sb7") @@ -136,19 +136,27 @@ omni_range = 2.13 omni_attenuation = -3.149 [node name="Hall-Win" parent="." instance=ExtResource("8_ioo17")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 7) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 7) [node name="Hall-Win-Outline" parent="Hall-Win" instance=ExtResource("9_wse8f")] -[node name="OmniLight3D" type="OmniLight3D" parent="Hall-Win"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.20035, 0.994639, 2.35798) +[node name="WinIndicator" type="Node3D" parent="Hall-Win"] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 1, 2.1) + +[node name="GreenLight" type="OmniLight3D" parent="Hall-Win/WinIndicator"] light_color = Color(1, 0, 1, 1) light_energy = 1.806 light_negative = true omni_range = 4.318 omni_attenuation = -1.25 +[node name="Label3D" type="Label3D" parent="Hall-Win/WinIndicator"] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 2.8) +text = "YOU WIN!!!" + [node name="EntryPortal" type="Node3D" parent="." node_paths=PackedStringArray("exit_portal") groups=["portals"]] +unique_name_in_owner = true process_priority = 100 process_physics_priority = 100 transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -6, 1, 3) @@ -157,7 +165,7 @@ _portal_mesh_path = NodePath("Portal3D_Mesh") _teleport_area_path = NodePath("TeleportArea") _teleport_collider_path = NodePath("TeleportArea/Collider") portal_size = Vector2(2, 2) -exit_portal = NodePath("../BluePortal") +exit_portal = NodePath("../WinPortal") portal_render_layer = 524288 portal_frame_width = 0.0 viewport_size_mode = 0 @@ -185,9 +193,10 @@ mesh = SubResource("ArrayMesh_70uel") shape = SubResource("BoxShape3D_hiqwa") [node name="WinPortal" type="Node3D" parent="." node_paths=PackedStringArray("exit_portal") groups=["portals"]] +unique_name_in_owner = true process_priority = 100 process_physics_priority = 100 -transform = Transform3D(1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, -6, 1, 6.9) +transform = Transform3D(1, 0, 1.74846e-07, 0, 1, 0, -1.74846e-07, 0, 1, -10, 1, 6.9) script = ExtResource("10_ic0uy") _portal_mesh_path = NodePath("Portal3D_Mesh") _teleport_area_path = NodePath("TeleportArea") @@ -221,6 +230,7 @@ mesh = SubResource("ArrayMesh_70uel") shape = SubResource("BoxShape3D_hiqwa") [node name="BluePortal" type="Node3D" parent="." node_paths=PackedStringArray("exit_portal") groups=["portals"]] +unique_name_in_owner = true process_priority = 100 process_physics_priority = 100 transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.6, 3.2, 2.1) @@ -257,6 +267,7 @@ mesh = SubResource("ArrayMesh_70uel") shape = SubResource("BoxShape3D_hiqwa") [node name="RedPortal" type="Node3D" parent="." node_paths=PackedStringArray("exit_portal") groups=["portals"]] +unique_name_in_owner = true process_priority = 100 process_physics_priority = 100 transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.6, -1.2, -2.38419e-07) @@ -291,3 +302,6 @@ mesh = SubResource("ArrayMesh_70uel") [node name="Collider" type="CollisionShape3D" parent="RedPortal/TeleportArea"] shape = SubResource("BoxShape3D_hiqwa") + +[connection signal="on_teleport" from="BluePortal" to="." method="_on_blue_portal_on_teleport"] +[connection signal="on_teleport" from="RedPortal" to="." method="_on_red_portal_on_teleport"]