using H2Engine;
|
using UnityEngine;
|
using UnityEngine.Events;
|
|
public class TriggerHandler
|
{
|
private MapTrigger m_Trigger;
|
|
public static UnityAction<int> OnEnter;
|
public static UnityAction<int> 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);
|
}
|
}
|
}
|
}
|
}
|