多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Unity NavMesh 烘焙原理与工程实践:体素化、Agent 参数与局部更新

Unity NavMesh 烘焙原理与工程实践:体素化、Agent 参数与局部更新 引言:烘焙参数决定寻路质量的上限怪物 AI 卡在墙角抽搐、NPC 无视台阶直接滑下悬崖、狭窄走廊烘出一片"黑洞"——这类问题的根源几乎都不在运行时寻路逻辑,而在烘焙阶段:Agent 参数与场景几何不匹配,导致生成的导航网格本身就不可用。很多开发者对 NavMesh 的使用停留在"勾选 Navigation Static,点击 Bake",不理解角色体型、坡度与台阶高度如何映射到网格生成过程,项目后期必然在寻路逻辑上反复返工。本文聚焦烘焙本身:参数如何影响生成结果、底层流水线各步骤在做什么、以及大型场景的烘焙工程方案。一、烘焙输入:静态标记与几何来源1.1 参与烘焙的对象条件Unity 内置烘焙(Navigation 窗口)采集的是标记为Navigation Static的 GameObject 的几何信息。需要澄清一个常见误解:烘焙读取的是对象的渲染几何体或碰撞体在体素化阶段的投影,具体而言引擎会把静态对象的网格数据送入体素化流水线;完全没有几何与碰撞体的空对象不会贡献任何表面。动态创建的对象、未标记 Static 的对象默认不参与烘焙。1.2 Area 标记与代价每个参与烘焙的对象还可以指定Navigation Area(Walkable、Not Walkable、Jump 或自定义 Area)。Area 在运行时通过NavMeshQueryFilter的 areaMask 与每个 Area 的 Cost 共同作用:areaMask
返回列表