MiniGames/Assets/Scripts/ChaseOn/ChaseObstacleTrigger.cs
2025-09-16 17:51:02 +05:00

77 lines
1.7 KiB
C#

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<ChasePlayerController>();
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);
}
}