using System.Linq;
using BehaviorDesigner.Runtime.Tasks;
using UnityEngine;
namespace CoreGame.Render
{
///
/// 将召唤者设置为导航目标
///
public class MoveToCaster : Action
{
[SerializeField] private float distance;
private CombatEntity m_OwnerEnt;
private CombatEntity caster;
private Vector2 m_TargetPos;
public override void OnStart()
{
m_OwnerEnt = Owner.GetEntity();
caster = TargetSelectSrv.GetCaster(m_OwnerEnt);
}
public override TaskStatus OnUpdate()
{
var speed = m_OwnerEnt.property.MoveSpeed;
var navProxy = m_OwnerEnt.navAgentProxy;
m_TargetPos = caster.transformProxy.position;
navProxy.SetDestination(m_TargetPos, speed, 0.01f);
// if ((m_OwnerEnt.transformProxy.position - m_TargetPos).sqrMagnitude < 1.1f)
if ((m_TargetPos - m_OwnerEnt.transformProxy.position).sqrMagnitude < distance * distance)
{
return TaskStatus.Success;
}
return TaskStatus.Running;
}
}
}