using System.Collections; using UnityEngine; public class ObstacleTrigger : MonoBehaviour { public Manager_Game_RPG.KategoriPoin kategoriPengurang = Manager_Game_RPG.KategoriPoin.Disiplin; public int pengurangPoin = 10; [Header("Pesan")] [TextArea] public string pesanPeringatan = "Hati-hati, area ini bisa membuat Salim lupa misi."; [TextArea] public string pesanHukuman = "Salim kurang teliti."; [Header("Aturan")] public float waktuSebelumHukuman = 1.2f; public bool hanyaSekali = true; private bool sudahKena = false; private bool playerMasihDiArea = false; private Manager_Game_RPG manager; private Coroutine coroutineHukuman; private void Start() { manager = FindObjectOfType(); } private void OnTriggerEnter2D(Collider2D collision) { if (!collision.CompareTag("Player")) return; if (manager == null) return; if (hanyaSekali && sudahKena) return; playerMasihDiArea = true; manager.TampilkanInfo(pesanPeringatan); coroutineHukuman = StartCoroutine(TungguSebelumHukuman()); } private void OnTriggerExit2D(Collider2D collision) { if (!collision.CompareTag("Player")) return; playerMasihDiArea = false; if (coroutineHukuman != null) StopCoroutine(coroutineHukuman); } private IEnumerator TungguSebelumHukuman() { yield return new WaitForSeconds(waktuSebelumHukuman); if (!playerMasihDiArea) yield break; if (manager == null) yield break; sudahKena = true; manager.TerkenaObstacle(kategoriPengurang, pengurangPoin, pesanHukuman); } }