using UnityEngine; public class ChaseObstacleTrigger : MonoBehaviour { private float contactTimer = 0f; private bool isPlayerTouching = false; private ChasePlayerController player; private void HandleEnter(GameObject obj) { if (!obj.CompareTag("Player")) return; player = obj.GetComponent(); if (player != null) { isPlayerTouching = true; contactTimer = 0f; player.OnObstacleHit(); // First hit (stumble) } gameObject.SetActive(false); } private void HandleStay() { if (!isPlayerTouching || player == null) return; contactTimer += Time.deltaTime; if (contactTimer >= 1f) { player.OnObstacleHit(); // Second hit = GameOver isPlayerTouching = false; // Prevent further hits } } private void HandleExit(GameObject obj) { if (!obj.CompareTag("Player")) return; isPlayerTouching = false; contactTimer = 0f; player = null; } // ---------- For Collision ---------- private void OnCollisionEnter(Collision collision) { HandleEnter(collision.gameObject); } private void OnCollisionStay(Collision collision) { HandleStay(); } private void OnCollisionExit(Collision collision) { HandleExit(collision.gameObject); } // ---------- For Trigger ---------- private void OnTriggerEnter(Collider other) { HandleEnter(other.gameObject); } private void OnTriggerStay(Collider other) { HandleStay(); } private void OnTriggerExit(Collider other) { HandleExit(other.gameObject); } }