using UnityEngine; public class GA_NpcClientCollect : GA_NpcClientFunc { protected override void OnInit(GameNetPackBasic package) { base.OnInit(package); } protected override void OnUnit() { base.OnUnit(); ClientCollectUtility.Leave(this); } public override void OnClick() { if (GA_Hero.s_MapSwitching) { return; } GA_Hero _hero = PlayerDatas.Instance.hero; if (_hero == null) { return; } _hero.LockTarget = this; _hero.SelectTarget = this; float _chkDistSqrt = MathUtility.DistanceSqrtXZ(_hero.Pos, Pos); // 这里判断是否要走向此对象 if (_chkDistSqrt > 4) { _hero.RunImmediate(); _hero.MoveToPosition(Pos, 1f); } } public override void OnSelect() { if (NpcConfig.NPCID != 10204200) { SelectionManager.Request(SelectionManager.E_Type.Green, this, NpcConfig.ModelRadius * 2); } GA_Hero _hero = PlayerDatas.Instance.hero; Vector3 _forward = MathUtility.ForwardXZ(Pos, _hero.Pos); _hero.Forward = _forward; if (NpcConfig.AutomaticFace == 1) { _forward = MathUtility.ForwardXZ(_hero.Pos, Pos); Forward = _forward; } } public override void OnUnSelect() { base.OnUnSelect(); ClientCollectUtility.Leave(this); } protected override void OnFixedUpdate() { base.OnFixedUpdate(); GA_Hero _hero = PlayerDatas.Instance.hero; if (_hero != null) { float _distSqrt = MathUtility.DistanceSqrtXZ(_hero.Pos, Pos); if (_distSqrt < Mathf.Pow(NpcConfig.ModelRadius + 0.4f + GeneralDefine.CloseNpcDist, 2)) { ClientCollectUtility.Arrive(this); } else { ClientCollectUtility.Leave(this); } } } }