40 lines
1.1 KiB
C#
40 lines
1.1 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
|
|
public class TriggerZone : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
private Triggerable linkedObj;
|
|
[SerializeField]
|
|
private bool onEnter = true, onStay = false, OnExit = false;
|
|
public UnityEvent enterEvent;
|
|
public UnityEvent stayEvent;
|
|
public UnityEvent exitEvent;
|
|
// Start is called before the first frame update
|
|
private void OnTriggerEnter(Collider other) {
|
|
if(!onEnter)return;
|
|
if(other.gameObject.tag.Equals("Player")){
|
|
linkedObj?.TriggerEvent(other);
|
|
enterEvent?.Invoke();
|
|
}
|
|
}
|
|
|
|
private void OnTriggerStay(Collider other) {
|
|
if(!onStay)return;
|
|
if(other.gameObject.tag.Equals("Player")){
|
|
linkedObj?.TriggerEvent(other);
|
|
stayEvent?.Invoke();
|
|
}
|
|
}
|
|
|
|
private void OnTriggerExit(Collider other) {
|
|
if(!OnExit)return;
|
|
if(other.gameObject.tag.Equals("Player")){
|
|
linkedObj?.TriggerEvent(other);
|
|
exitEvent?.Invoke();
|
|
}
|
|
}
|
|
}
|