extends Area2D # Tarik file scene (.tscn) tujuan kamu ke slot ini lewat Inspector @export_file("*.tscn") var scene_tujuan: String = "res://ruanganjaga.tscn" var player_didalam_area: Node2D = null func _ready() -> void: # Hubungkan sinyal body_entered dan body_exited di tab Node (Editor) seperti biasa ya pass func _on_body_entered(body: Node2D) -> void: if body.is_in_group("pemain"): player_didalam_area = body print("🚪 Pintu ruangan ditemukan! Tekan interaksi untuk masuk...") func _on_body_exited(body: Node2D) -> void: if body == player_didalam_area: player_didalam_area = null print("Player menjauh dari pintu.") func _input(event: InputEvent) -> void: # Jika tombol yang ditekan bukan tombol interaksi, abaikan if not event.is_action_pressed("interact"): return # Keamanan: Jika player tidak berada di depan pintu ini, jangan proses kodenya if player_didalam_area == null: return # --- PROSES TRANSISI PINTU DIMULAI --- print("🚪 Player berinteraksi dengan pintu!") # 🎵 BARU: CARI DAN FADE OUT AUDIO PANGGUNG UTAMA LEWAT JALUR MUTLAK var stage_node = get_node_or_null("/root/Node2D") if stage_node: var audio1 = stage_node.get_node_or_null("AudioStreamPlayer") var audio2 = stage_node.get_node_or_null("AudioStreamPlayer2") # Ambil durasi durasi fade out dari variabel di stage (atau set manual 1.5 detik) var durasi_fade = stage_node.get("DURASI_FADE_OUT") if stage_node.get("DURASI_FADE_OUT") != null else 1.5 if audio1 and audio1.is_playing(): var tween1 = create_tween() tween1.tween_property(audio1, "volume_db", -80.0, durasi_fade).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_IN) if audio2 and audio2.is_playing(): var tween2 = create_tween() tween2.tween_property(audio2, "volume_db", -80.0, durasi_fade).set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_IN) print("🎵 Sinyal Pintu: Perintah Fade-Out dikirim ke kedua Audio panggung...") # SOLUSI SAKTI VISUAL: Panggil transisi layar hitam if get_node_or_null("/root/Node2D/TransitionLayer/fade_to_black"): var anim_player = get_node("/root/Node2D/TransitionLayer/fade_to_black") anim_player.play("fadeout") print("🎬 Memutar animasi fadeout...") # Tunggu sampai animasinya selesai berjalan await anim_player.animation_finished else: print("⚠️ Peringatan: Jalur /root/Node2D/TransitionLayer/fade_to_black tidak ditemukan!") # Setelah layar gelap dan audio senyap murni karena fadeout, baru pindah scene! print("🚪 Membuka pintu, memuat scene baru...") var error_code = get_tree().change_scene_to_file(scene_tujuan) if error_code != OK: print("❌ Gagal pindah scene! Periksa apakah path file sudah benar: ", scene_tujuan)