using BehaviorDesigner.Runtime.Tasks; using UnityEngine; namespace CoreGame.Render { /// /// 向出生点x米内的一个点移动(召唤物的出生点会跟随玩家移动) /// public class IdleMoveAction : Action { [SerializeField] private float range; private CombatEntity m_OwnerEnt; private Vector2 m_TargetPos; public override void OnStart() { m_OwnerEnt = Owner.GetEntity(); var bornPos = m_OwnerEnt.blackboard.GetBornPos(); var random = Random.insideUnitCircle * range; m_TargetPos = bornPos + new Vector2(random.x, random.y); } public override TaskStatus OnUpdate() { var speed = m_OwnerEnt.property.MoveSpeed; var navProxy = m_OwnerEnt.navAgentProxy; navProxy.SetDestination(m_TargetPos, speed.AsFloat, 0.01f); // if ((m_OwnerEnt.transformProxy.position - m_TargetPos).sqrMagnitude < 1.1f) if (navProxy.IsArrived()) { return TaskStatus.Success; } return TaskStatus.Running; } } }