/* Author : Wai Lam Date : 11/2/2025 Description : Car obstacle */ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class CanvasFade : MonoBehaviour { public CanvasGroup fadeCanvasGroup; // Assign in Inspector public float fadeDuration = 1f; // Duration for fade in/out public float displayDuration = 5f; // Time the UI stays fully visible public string nextSceneName; // Name of the scene to load private bool hasTriggered = false; // Prevent multiple triggers private void OnTriggerEnter(Collider other) { // Check if the player entered the trigger if (!hasTriggered && other.CompareTag("Player")) { hasTriggered = true; StartCoroutine(FadeInAndLoadScene()); } } IEnumerator FadeInAndLoadScene() { // Fade In yield return StartCoroutine(Fade(0f, 1f, fadeDuration)); // Display UI for 5 seconds yield return new WaitForSeconds(displayDuration); // Load the next scene SceneManager.LoadScene(nextSceneName); } IEnumerator Fade(float startAlpha, float endAlpha, float duration) { float elapsed = 0f; fadeCanvasGroup.alpha = startAlpha; while (elapsed < duration) { elapsed += Time.deltaTime; fadeCanvasGroup.alpha = Mathf.Lerp(startAlpha, endAlpha, elapsed / duration); yield return null; } fadeCanvasGroup.alpha = endAlpha; } }