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);
|
}
|
}
|
}
|
}
|