首页/ 第 15 章 · 寻路与导航/ 第 255 课
LESSON 255 · 寻路与导航

Off-Mesh Link 跳跃连接

OffMeshLink 已掌握。下一课做巡逻路径系统。

⏱ 约 14 分钟📊 难度:入门🗂 第 15 章 · 寻路与导航📍 第 255 / 300 课
课程进度
255 / 300

🎯本节学习目标

  • 理解 OffMeshLink
  • 创建跳跃连接
  • 实现跨区移动

🚀课程导读

“跳下悬崖”“跨过沟”——NavMesh 断开处用 OffMeshLink 手动“搭桥”。本课实现。

OffMeshLink 概念

两个点“搭桥”。

  1. 【问题】台阶/沟壑/断桥让 NavMesh 不连续,AI 走不过去。
  2. 【OffMeshLink】在两个 NavMesh 区域间手动建立“连接”:AI 走到起点自动“跳”到终点。
  3. 【创建】空对象加 OffMeshLink 组件,设 Start/End 两个 Transform 端点。
  4. 【端点】起点放 NavMesh 边缘,终点放另一块 NavMesh 边缘。
  5. 【激活】两个端点必须是 NavMesh 上的可走位置(否则连接无效)。
  6. 【双向】Bidirectional 勾选=可来回走(默认)。
  7. 【自动跳】AI 走到起点自动“瞬移/飞”到终点。
  8. 【效果】跨沟、下坡、楼梯都能走。
  9. 【完成】“搭桥”成功!
💡
OffMeshLink = 手动搭桥:两个端点一接,AI 自动“过桥”。NavMesh 断裂处必备。

跳跃动画与实现

让“跳”像样。

  1. 【基础】默认 OffMeshLink 跨越是“瞬间移动”(可选抛物线 Auto)。
  2. 【动画】给 Agent 检测“正在过桥”:
  3. 在 OnNavMesh 相关回调或判断:
  4. agent.isOnOffMeshLink 为 true 时正处桥(跨接中)。
  5. 【示例】过桥时播跳跃动画:
  6. void Update() {
  7. if (agent.isOnOffMeshLink) {
  8. // 播放跳跃动画
  9. anim.SetTrigger("Jump");
  10. // 完成后让 agent 完成跨越
  11. agent.CompleteOffMeshLink();
  12. }
  13. }
  14. 【进阶】自定义跨越轨迹(协程控制速度抛弧线,进阶)。
  15. 【其他连接】楼梯:用 OffMeshLink 或让楼梯本身可走(Max Slope/Step Height 覆盖)。
  16. 【测试】AI 从平台 A 跳/走到平台 B。
  17. 【注意】端点要对准 NavMesh 边缘,别悬空。
  18. 【完成】AI 能“跨”了!
OffMeshLink 用法 = 两个端点 + isOnOffMeshLink 检测(播动画)+ CompleteOffMeshLink。三步。

常见错误与排查

错误:AI 不走上桥?
原因:端点不在 NavMesh 上或没连接上
解决:把 Start/End 放到 NavMesh 边缘可走位置;确认连接是双向;重建网格。

动手练习

课后小任务(做出来才算真的学会)

  • 搭一个跨沟 OffMeshLink
  • 过桥时播跳跃动画
  • 做楼梯连接

本节小结

OffMeshLink 已掌握。下一课做巡逻路径系统。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课动态障碍 NavMeshObstacle