68 lines
1.7 KiB
C#
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);
|
|
}
|
|
} |