using H2Engine; using UnityEngine; using UnityEngine.Events; public class TriggerHandler { private MapTrigger m_Trigger; public static UnityAction OnEnter; public static UnityAction OnExit; private bool m_InOrOut; public TriggerHandler(MapTrigger trigger) { m_Trigger = trigger; } public void Update() { var _hero = PlayerDatas.Instance.hero; if (_hero == null) { return; } if (m_InOrOut) { if (_hero.Pos.x < m_Trigger.position.x - m_Trigger.size.x * .5f || _hero.Pos.x > m_Trigger.position.x + m_Trigger.size.x * .5f || _hero.Pos.z < m_Trigger.position.z - m_Trigger.size.z * .5f || _hero.Pos.z > m_Trigger.position.z + m_Trigger.size.z * .5f) { m_InOrOut = false; if (OnExit != null) { OnExit(m_Trigger.id); } } } else { if (_hero.Pos.x > m_Trigger.position.x - m_Trigger.size.x * .5f && _hero.Pos.x < m_Trigger.position.x + m_Trigger.size.x * .5f && _hero.Pos.z > m_Trigger.position.z - m_Trigger.size.z * .5f && _hero.Pos.z < m_Trigger.position.z + m_Trigger.size.z * .5f) { m_InOrOut = true; if (OnEnter != null) { OnEnter(m_Trigger.id); } } } } }