You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity技术求助:如何让游戏对象无限循环遍历路径点?

实现Unity中游戏对象无限循环遍历路径点的方案

看你现有的AutoPilot脚本已经搭好了基础框架,我来帮你补全无限循环遍历路径点的核心逻辑,让脚本完整跑起来:

完整修正后的代码

using UnityEngine;
using UnityEngine.AI;
using System.Collections;

public class AutoPilot : 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.1f)
            GotoNextPoint();
    }
}

关键修改与说明

  • 无限循环核心逻辑:在GotoNextPoint()里用destPoint = (destPoint + 1) % points.Length;,通过取余运算让索引在路径点数组范围内循环,走到最后一个点后自动回到第一个,实现无限遍历。
  • 到达判定逻辑:新增Update()方法,每一帧检查导航代理是否到达当前目标——当路径不再更新且剩余距离小于0.1f(可根据物体大小调整阈值)时,自动跳转到下一个路径点。
  • 补全自动刹车设置:把你注释里提到的禁用自动刹车逻辑补全,确保物体在路径点间平滑移动,不会频繁减速停顿。

使用小提示

  • 确保游戏对象上已挂载NavMeshAgent组件,且场景完成了NavMesh烘焙。
  • 在Inspector面板中给points数组按顺序添加路径点的Transform引用,顺序就是物体遍历的顺序。
  • 如果觉得到达判定太灵敏或太迟钝,可以修改Update()里的remainingDistance阈值(比如改成0.5f适配更大的物体)。

内容的提问来源于stack exchange,提问作者jhonathan myers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:01:12