You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.2 KiB
35 lines
1.2 KiB
1 month ago
|
using BehaviorDesigner.Runtime.Tasks;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace CoreGame.Render
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// 向出生点x米内的一个点移动(召唤物的出生点会跟随玩家移动)
|
||
|
/// </summary>
|
||
|
public class IdleMoveAction : Action
|
||
|
{
|
||
|
[SerializeField] private float range;
|
||
|
private CombatEntity m_OwnerEnt;
|
||
|
private Vector2 m_TargetPos;
|
||
|
public override void OnStart()
|
||
|
{
|
||
|
m_OwnerEnt = Owner.GetEntity<CombatEntity>();
|
||
|
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;
|
||
|
}
|
||
|
}
|
||
|
}
|