diff --git a/level.tscn b/level.tscn index 27cc3bf..46f9fe4 100644 --- a/level.tscn +++ b/level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=146 format=4 uid="uid://dv2iwxsd3rqha"] +[gd_scene load_steps=149 format=4 uid="uid://dv2iwxsd3rqha"] [ext_resource type="PackedScene" uid="uid://clc5dre31iskm" path="res://addons/godot-xr-tools/xr/start_xr.tscn" id="1_8b0r0"] [ext_resource type="AudioStream" uid="uid://de8rodemmcmg1" path="res://How German Sounds To Non-Germans (mp3cut.net).mp3" id="1_fj6e6"] @@ -46,6 +46,8 @@ [ext_resource type="PackedScene" uid="uid://d1bmffs5q85hn" path="res://addons/godot-xr-tools/objects/paper.tscn" id="42_k1ecl"] [ext_resource type="Texture2D" uid="uid://byroxl3ej812v" path="res://111.png" id="44_td4uw"] [ext_resource type="Texture2D" uid="uid://c0bfv7taawf0l" path="res://222.png" id="45_r5f7e"] +[ext_resource type="Script" uid="uid://chtlkg6lvxdwh" path="res://victory_zone.gd" id="47_na3no"] +[ext_resource type="AudioStream" uid="uid://capgoevf35pnj" path="res://victory-nomination-winner-champion-music-249655.mp3" id="47_wp8k7"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_h6smj"] sky_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1) @@ -519,6 +521,9 @@ points = PackedVector3Array(0.008628573, 0.7075936, -0.500077, -0.032590475, 0.6 [sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_s7ylq"] points = PackedVector3Array(-0.032590475, 0.63890195, -0.4313853, 0.008628573, 0.7075869, -0.40391266, 0.008628573, 0.7075869, -0.41765907, 0.008628573, 0.63890195, -0.40391266, -0.018848103, 0.7075869, -0.40391266, -0.018848103, 0.7075869, -0.44513172, -0.005117834, 0.63890195, -0.4313853, -0.018848103, 0.63890195, -0.40391266, -0.032590475, 0.7075869, -0.41765907, -0.032590475, 0.65264434, -0.44513172, -0.032590475, 0.7075869, -0.44513172, 0.008628573, 0.63890195, -0.41765907, -0.032590475, 0.63890195, -0.41765907, -0.018848103, 0.65264434, -0.44513172) +[sub_resource type="BoxShape3D" id="BoxShape3D_r5f7e"] +size = Vector3(0.33154297, 2.4052734, 1.053772) + [node name="Level" type="Node3D"] [node name="WorldEnvironment" type="WorldEnvironment" parent="."] @@ -1296,6 +1301,21 @@ linear_damp = 0.4 texture_baby = ExtResource("44_td4uw") texture_teen = ExtResource("45_r5f7e") +[node name="VictoryZone" type="Area3D" parent="." node_paths=PackedStringArray("fade_mesh", "victory_label", "victory_label2", "victory_music")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.311865, 1.1331652, 0.37483346) +script = ExtResource("47_na3no") +fade_mesh = NodePath("../Player/Camera/FadeScreen") +victory_label = NodePath("../Player/Camera/FadeScreen/Label3D") +victory_label2 = NodePath("../Player/Camera/FadeScreen/Label3D2") +victory_music = NodePath("AudioStreamPlayer") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="VictoryZone"] +shape = SubResource("BoxShape3D_r5f7e") + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="VictoryZone"] +stream = ExtResource("47_wp8k7") +volume_db = -10.0 + [editable path="Player"] [editable path="WheelSpace"] [editable path="Desk/DrawerSpace"] diff --git a/player.tscn b/player.tscn index 9f00fad..3ee1346 100644 --- a/player.tscn +++ b/player.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=3 uid="uid://srkkei4i3bwx"] +[gd_scene load_steps=11 format=3 uid="uid://srkkei4i3bwx"] [ext_resource type="PackedScene" uid="uid://njx823gyk04n" path="res://addons/godot-xr-tools/hands/scenes/highpoly/left_hand.tscn" id="2_hqtel"] [ext_resource type="PackedScene" uid="uid://raeeicvvindd" path="res://addons/godot-xr-tools/hands/scenes/highpoly/right_hand.tscn" id="2_i3pqv"] @@ -9,10 +9,37 @@ [ext_resource type="PackedScene" uid="uid://buevt1k3wgtq6" path="res://watch.tscn" id="6_1jxqw"] [ext_resource type="PackedScene" uid="uid://cqhw276realc" path="res://addons/godot-xr-tools/functions/function_pointer.tscn" id="7_dw050"] +[sub_resource type="QuadMesh" id="QuadMesh_dw050"] +size = Vector2(2, 2) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_b26j0"] +transparency = 1 +depth_draw_mode = 1 +shading_mode = 0 +albedo_color = Color(0, 0, 0, 0) + [node name="Player" type="XROrigin3D" groups=["Baby"]] [node name="Camera" type="XRCamera3D" parent="."] +[node name="FadeScreen" type="MeshInstance3D" parent="Camera"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.6) +mesh = SubResource("QuadMesh_dw050") +surface_material_override/0 = SubResource("StandardMaterial3D_b26j0") + +[node name="Label3D" type="Label3D" parent="Camera/FadeScreen"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.110438704, 0.018422484) +modulate = Color(1, 1, 1, 0) +outline_modulate = Color(0, 0, 0, 0) +text = "YEARS APART" + +[node name="Label3D2" type="Label3D" parent="Camera/FadeScreen"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.10656129, 0.014999986) +pixel_size = 0.0025 +modulate = Color(1, 1, 1, 0) +outline_modulate = Color(0, 0, 0, 0) +text = "by Lukas, Daniel & Selim" + [node name="LeftController" type="XRController3D" parent="."] tracker = &"left_hand" @@ -53,5 +80,6 @@ camera = NodePath("../../Camera") transform = Transform3D(0.00025759128, -0.0019833425, 0, 0.0018915471, 0.00024566916, -0.0006014116, 0.00059640256, 7.745919e-05, 0.001907434, 0, -0.034, 0.108) [node name="PlayerBody" parent="." instance=ExtResource("4_2hs0m")] +collision_layer = 524289 player_height_rate = 20.0 head_behavior_mode = 2 diff --git a/victory-nomination-winner-champion-music-249655.mp3 b/victory-nomination-winner-champion-music-249655.mp3 new file mode 100644 index 0000000..1368054 Binary files /dev/null and b/victory-nomination-winner-champion-music-249655.mp3 differ diff --git a/victory-nomination-winner-champion-music-249655.mp3.import b/victory-nomination-winner-champion-music-249655.mp3.import new file mode 100644 index 0000000..6732d6d --- /dev/null +++ b/victory-nomination-winner-champion-music-249655.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://capgoevf35pnj" +path="res://.godot/imported/victory-nomination-winner-champion-music-249655.mp3-9490f8650742a132348c4afaf3897f0c.mp3str" + +[deps] + +source_file="res://victory-nomination-winner-champion-music-249655.mp3" +dest_files=["res://.godot/imported/victory-nomination-winner-champion-music-249655.mp3-9490f8650742a132348c4afaf3897f0c.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/victory_zone.gd b/victory_zone.gd new file mode 100644 index 0000000..3c0aa6c --- /dev/null +++ b/victory_zone.gd @@ -0,0 +1,50 @@ +extends Area3D + +# Referenzen (müssen wir gleich zuweisen) +@export var fade_mesh : MeshInstance3D +@export var victory_label : Label3D +@export var victory_label2 : Label3D +@export var victory_music : AudioStreamPlayer + +var is_triggered = false + +func _ready(): + body_entered.connect(_on_finish_line) + +func _on_finish_line(body): + # Wir prüfen, ob der PlayerBody (vom XRToolsPlayerBody) durchläuft + # Oder der "CharacterBody3D" name. Meistens heißt er "PlayerBody" + if not is_triggered and (body.name == "PlayerBody" or body is CharacterBody3D): + finish_game() + +func finish_game(): + is_triggered = true + print("VICTORY!") + + # 1. Musik starten + if victory_music: + victory_music.play() + + # 2. Visuelles Fading (Tweening) + var tween = create_tween() + tween.set_parallel(true) # Alles gleichzeitig + + # A. Bildschirm Schwarz machen (Alpha von 0 auf 1) + if fade_mesh: + # Wir holen das Material + var mat = fade_mesh.get_surface_override_material(0) + if mat: + tween.tween_property(mat, "albedo_color:a", 1.0, 3.0) # 3 Sekunden Fade + + # B. Text einblenden + if victory_label: + tween.tween_property(victory_label, "modulate:a", 1.0, 3.0) + tween.tween_property(victory_label, "outline_modulate:a", 1.0, 3.0) + + if victory_label2: + tween.tween_property(victory_label2, "modulate:a", 1.0, 3.0) + tween.tween_property(victory_label2, "outline_modulate:a", 1.0, 3.0) + + # C. Optional: Nach 5 Sekunden Spiel beenden? + await get_tree().create_timer(50.0).timeout + get_tree().quit() diff --git a/victory_zone.gd.uid b/victory_zone.gd.uid new file mode 100644 index 0000000..df6c759 --- /dev/null +++ b/victory_zone.gd.uid @@ -0,0 +1 @@ +uid://chtlkg6lvxdwh