using UnityEngine; using System.Collections; /// /// ExitController handles the logic of the exit door. /// [RequireComponent(typeof(Animator))] public class ExitController : Activateable { [Header("Configuration")] public float playerExitDelay = 1f; private Animator _animator; private Coroutine _transitionCoroutine; private void Awake() { _animator = GetComponent(); } private void OnTriggerEnter2D(Collider2D other) { if (isActive && other.CompareTag("Player")) { _transitionCoroutine ??= StartCoroutine(WaitAndTransition()); } } private void OnTriggerExit2D(Collider2D other) { if (other.CompareTag("Player") && _transitionCoroutine != null) { StopCoroutine(_transitionCoroutine); _transitionCoroutine = null; } } private IEnumerator WaitAndTransition() { yield return new WaitForSeconds(playerExitDelay); TransitionManager.Instance.NextLevel(); _transitionCoroutine = null; } protected override void OnActivation() { _animator.SetBool("IsActive", true); } protected override void OnDeactivation() { _animator.SetBool("IsActive", false); } }