MIF_E31230101/Assets/Script Manager/RPG_Revisi/ObstacleTrigger.cs

68 lines
1.7 KiB
C#

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