--gws :暂时不用这个脚本了 ,在InteractComponent 中实现了碰撞盒的交互 , 以后有其他类型的交互(加buff出按钮)可能会再次用 --- 交互部分跟逻辑相关的代码 --[[-- 抽样的统一管理交互功能的类 local InteractManager = {} local ColliderManager = require("Battle/Logic/Level/ColliderManager") local EventSystem = require('Event/EventSystem') local private = {} function private.OnEnter(ownEntity, triggerEntity) local interactEntity = ownEntity triggerEntity:AddInteractEntity(interactEntity) local interactData= ownEntity.components.interact.InteractData -- 也可以从ownEntity.components.interact 中获取 EventSystem.Dispatch(EventID.UI_Interact_Show, true ,interactData ,triggerEntity) end function private.OnExit(interact, triggerEntity) triggerEntity:AddInteractEntity(nil) -- 清空交互 local ownEntity = triggerEntity.components.interact:GetInteractEntity() local interactData= ownEntity.components.interact.InteractData -- 也可以从ownEntity.components.interact 中获取 EventSystem.Dispatch(EventID.UI_Interact_Show, false ,interactData ,triggerEntity) end function InteractManager.CreatInteract(entity,interactData) local pos = entity.components.move.LogicPos --gws :为什么不用cloneV2 ,因为entity会移动改修LogicPos ,ColliderManager中保存这个碰撞 ,则可以不必再entity移动时修改它里面的pos值 local colliderID = ColliderManager.CreateCircleCollider(pos,interactData.InteractRange) ColliderManager.AddEnterEvent(colliderID,entity.OnInteractColliderEnter ,entity) ColliderManager.AddExitEvent(colliderID, entity.OnInteractColliderExit ,entity) --ColliderManager.ActiveCollider(colliderID, LogicUpdateManager.SyncEntityIter) return colliderID end return InteractManager --]]