Hook up portals together
This commit is contained in:
parent
3205030b44
commit
05614ce307
@ -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
|
||||
|
26
world.tscn
26
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"]
|
||||
|
Loading…
Reference in New Issue
Block a user