using BehaviorDesigner.Runtime;
using BehaviorDesigner.Runtime.Tasks;
using UnityEngine;
namespace Assets.Scripts.CustomWander
{
[TaskDescription("Move towards object using the Unity NavMesh.")]
[TaskCategory("Custom/Movement")]
[TaskIcon("c8e612848487a184f9090d416c932c47", "812dc79fe1e417548959f61845528372")]
public class MoveTowards : NavMeshMovementBase
{
public SharedGameObject target;
public SharedVector3 targetPosition;
public override void OnStart()
{
base.OnStart();
SetDestination(Target()); // Must set in start to make sure HasArrived doesnt return wrong result
}
public override TaskStatus OnUpdate()
{
if (HasArrived())
{
return TaskStatus.Success;
}
SetDestination(Target());
return TaskStatus.Running;
}
// Return targetPosition if targetTransform is null
private Vector3 Target()
{
if (target == null || target.Value == null)
{
return targetPosition.Value;
}
return target.Value.transform.position;
}
}
}