Hook up portals together

This commit is contained in:
Vojtěch Struhár 2025-05-13 14:38:00 +02:00
parent 3205030b44
commit 05614ce307
2 changed files with 43 additions and 11 deletions

View File

@ -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

View File

@ -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"]