Unity NavMesh路径反向

问题描述 投票:0回答:1

我需要反转这个脚本,用来制作一个游戏对象,让它在一些变换之间进行巡逻。我需要这个对象从点(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();
    }
}
unity3d navmesh
1个回答
0
投票

你应该使用 Array.Reverse 当达到最终点时,便于在你的代码中实现。

文档 此处.

将此代码添加到 GoToNextPoint.

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

并删除。

destPoint = (destPoint + 1) % points.Length;
© www.soinside.com 2019 - 2024. All rights reserved.