unity Navmesh 路径反转

Unity NavMesh path reverse

我需要反转这个用于让游戏对象在某些变换之间巡逻的脚本。我需要对象从点 (1, 2, 3, 4, 5) 开始按顺序导航,当它到达数组的末尾时,它会反转数组本身的顺序,以便它会向后导航 (5, 4, 3, 2 ,1).

using UnityEngine;
using UnityEngine.AI;
public class Patrol : MonoBehaviour
{

    public Transform[] points;
    private int destPoint = 0;
    private NavMeshAgent agent;


    void Start()
    {
        agent = GetComponent<NavMeshAgent>();
        agent.autoBraking = false;
        GotoNextPoint();
    }


    void GotoNextPoint()
    {
        if (points.Length == 0)
            return;

        agent.destination = points[destPoint].position;
        destPoint = (destPoint + 1) % points.Length;
    }


    void Update()
    {
        if (!agent.pathPending && agent.remainingDistance < 0.5f)
            GotoNextPoint();
    }
}

您应该在达到最终点时使用 Array.Reverse 以便于在您的代码上实现。

文档 here.

将此代码添加到 GoToNextPoint 的末尾。

destPoint++;
if (destPoint >= points.Length)
{
    Array.Reverse(points);
    destPoint = 0;
}

并删除。

destPoint = (destPoint + 1) % points.Length;