Newer
Older
Hierarchical-Task-Network-Unity-3D / Assets / Scripts / Example / PrimitiveTasks / GoToLocation.cs
using UnityEngine;

public class GoToLocation : PrimitiveTask
{
    private Vector3 location;

    // ================== CONSTRUCTOR ==================
    public GoToLocation(Vector3 location) => this.location = location;

    // ================== TASK ACTION ==================

    //Sets a destination to the Agent
    public override void Execute(HTNPlanner planner)
    {
        if (!hasRun)
        {
            planner.Agent.NavMeshAgent.destination = location;
            hasRun = true;
        }
    }

    // Optional convenience method
    public static PrimitiveTaskBuilder Create(Vector3 location) => PrimitiveTaskBuilder.For(new GoToLocation(location));
}