| Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Fight/Stage/MapEditor/Game/ClientSceneManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Fight/Stage/MapEditor/Game/TransferGroup.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Fight/Stage/MapEditor/Game/TriggerHandler.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs
@@ -118,6 +118,7 @@ MainRedDot.Instance.Register(); SettingEffectMgr.Instance.Begin(); QuickSetting.Instance.SetQuickSetting(package.Setting); ClientSceneManager.Instance.ReConnectClear(); // 初始化摄像机 if (!CameraController.Instance) Fight/Stage/MapEditor/Game/ClientSceneManager.cs
@@ -10,6 +10,7 @@ private Dictionary<int, IEventHandler> m_EventHandlerDict = new Dictionary<int, IEventHandler>(); private List<IEventHandler> m_ReadyRemoveEventHandlerList = new List<IEventHandler>(); private Dictionary<int, uint> m_TriggerIDToMissionIDDict = new Dictionary<int, uint>(); private Dictionary<int, TriggerHandler> m_TriggerHandlerDict = new Dictionary<int, TriggerHandler>(); private List<int> m_ReadyRemoveTriggerList = new List<int>(); private Dictionary<int, List<GActorNpcFight>> m_EventActorDict = new Dictionary<int, List<GActorNpcFight>>(); @@ -177,6 +178,8 @@ m_TransferGroupList.Add(new TransferGroup(_trasfer)); } TriggerHandler.OnEnter += OnTriggerEnter; TriggerHandler.OnExit += OnTriggerExit; } public void UnInit() @@ -187,12 +190,22 @@ } m_TransferGroupList.Clear(); ReConnectClear(); TriggerHandler.OnEnter -= OnTriggerEnter; TriggerHandler.OnExit -= OnTriggerExit; m_Inited = false; } public void ReConnectClear() { foreach (var _triggerID in m_TriggerIDToMissionIDDict.Keys) { DelayUnTrigger(_triggerID); } m_Inited = false; m_TriggerIDToMissionIDDict.Clear(); m_TriggerHandlerDict.Clear(); } public void Update() @@ -200,6 +213,11 @@ foreach (var _trasfer in m_TransferGroupList) { _trasfer.Update(); } foreach (var _triggerHandler in m_TriggerHandlerDict.Values) { _triggerHandler.Update(); } m_ReadyRemoveEventHandlerList.Clear(); @@ -248,6 +266,7 @@ private IEnumerator DelayTrigger(uint missionID, int triggerID) { // ID为0, 约定为清空触发 if (triggerID == 0) { yield return SnxxzGame.Instance.StartCoroutine(DelayUnTrigger(triggerID)); @@ -285,6 +304,8 @@ continue; } var _triggerHandler = new TriggerHandler(_trigger); m_TriggerHandlerDict[_trigger.id] = _triggerHandler; foreach (var _eventID in _trigger.evevntIDs) { if (!m_MapData.eventDict.ContainsKey(_eventID)) @@ -304,4 +325,22 @@ break; } } private void OnTriggerEnter(int id) { Debug.Log("进入了触发器范围: " + id); } private void OnTriggerExit(int id) { if (m_TriggerHandlerDict.ContainsKey(id)) { Debug.Log("退出了触发器范围: " + id); CA225_tagCMClientTaskCount _a225 = new CA225_tagCMClientTaskCount { CountID = 10000 }; GameNetSystem.Instance.SendInfo(_a225); } } } Fight/Stage/MapEditor/Game/TransferGroup.cs
@@ -96,6 +96,7 @@ m_Step = 1; m_InCreaseTime = 0; m_FlyingEffect = SFXPlayUtility.Instance.PlayBattleEffect(1180, _hero); SFXPlayUtility.Instance.PlayBattleEffect(1181, _p.position, Vector3.forward); _hero.Idle(); _hero.SwitchHeadNameBindNode(true); } Fight/Stage/MapEditor/Game/TriggerHandler.cs
@@ -1,12 +1,55 @@ 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); } } } } }