Unity5.6新功能High-level NavMesh之实时动态烘培NavMesh

High-level NavMesh真是个神奇的东西,特别是在实时烘培NavMesh的时候

关于High-level NavMesh组件的介绍参考《Unity5.6新功能High-level NavMesh之组件介绍》

本文使用官方High-level NavMesh组件包进行研究。


1. 旧的NavMesh存在的缺陷

  • 我们都知道,要传统的要烘培NavMesh时的做法,就是将一个地板设置为Navigation Static属性,然后bake就出来了。但这样做的缺陷在于烘培的NavMesh是静态的,不能随地形变化而变化,如下图所示:
    Unity5.6新功能High-level NavMesh之实时动态烘培NavMesh_第1张图片
  • 此时,由于NavMesh的静止,导致AI寻路逻辑的玩法就缺少了很多可能性
  • 同时,旧的NavMesh是在游戏开发时就把NavMesh烘培出来,便不能满足游戏进行中游戏地图的随机生成,亦或者是游戏过程中游戏地图会出现多种变化情况的需求

2.High-Level NavMesh实时动态烘培

  • LocalNavMeshBuilder组件:该组件是High-level NavMesh组件包的一个脚本组件,用来构建并实时更新绑定有NavMeshSourceTag组件的物体局部的NavMesh,面板属性介绍如下:
    这里写图片描述
    • Tracked:指定被跟踪的游戏物体
    • Size: 局部烘培NavMesh的范围大小
  • NavMeshSourceTag组件:该组件用来标识那些物体被用于 LocalNavMeshBuilder组件的NevMesh烘培中,支持 mesh-filterterrain,能被拓展到 physicsprimitives

  • 新建一个空物体,添加LocalNavMeshBuilder组件,会出现一个线框方块。
    Unity5.6新功能High-level NavMesh之实时动态烘培NavMesh_第2张图片

  • 此时,将需要参与实时烘培的地面添加NavMeshSourceTag组件即可,线框方块所包围之内的所有绑有NavMeshSourceTag组件的游戏物体都将是烘培的对象,不需要Navigation Static属性,效果如下:

    Unity5.6新功能High-level NavMesh之实时动态烘培NavMesh_第3张图片

  • 此时已经实现了实时动态烘培NavMesh了,LocalNavMeshBuilder组件还有个优势就是局部烘培,指定跟随目标(Tracked)即可实现,效果如下

    Unity5.6新功能High-level NavMesh之实时动态烘培NavMesh_第4张图片

  • 甚至是代替NavMeshObstacle组件

    Unity5.6新功能High-level NavMesh之实时动态烘培NavMesh_第5张图片


之前的项目也已完成,NavMesh新功能的研究也就告一段落了,喜欢这种学习新鲜玩意的感觉。

你可能感兴趣的:(unity,unity组件)