障碍物分为动态障碍物和静态障碍物,比如说:
一堵不可移动的墙就是一个静态障碍物,但是一个会不停开关的机关门就是一个动态障碍物(一会儿可穿过一会儿不可穿过)
对于动态障碍物来说会出现一个问题,当我们进行导航网格扫描的时候,动态障碍物是不同的(游戏开始时才会发生移动),此时动态障碍物处不会出现导航网格,即动态障碍物处在导航的时候是不可移动的!
但是当游戏开始的时候,由于动态障碍物存在开关的,当它开的时候,理论上来说它是可以通过的,但由于烘焙的时候没有给他导航网格,此时这个动态障碍物就会在开启的时候变成一堵空气墙
那么怎么解决这个问题呢?
1.在层级面板选中是动态障碍物的游戏物体,然后在inspector面板处将其 navigation static 取消勾选,并选择nothing
2.在取消勾选之后,我们在去到导航组件的烘焙选项处(可以在inspector面版上直接进行切换)
点击Bake进行导航网格的烘焙,烘焙完后动态障碍物部分就会被导航网格给覆盖掉,变成可以进行通过的部分了,但是问题又来了,此时当动态障碍物处于关闭状态的时候由于它依然被导航网格给覆盖住,所以它就变成了一堵可以传过去的墙了
这又该怎么办呢?
3.继续在层级面板处选中为动态动态障碍物的游戏物体,然后在inspector面板处为这些游戏物体添加一个组件 --- Nav Mesh Obstacle(导航网格障碍)
添加后,这个动态障碍物在处于关闭的时候会变为无法通过的状态了 (成为一堵真正的墙了)
上面这个组件的第一个参数是形状 ---- 首先加了这个组件的动态障碍物也是被套了一层绿框碰撞器,这个形状指的就是这个绿框碰撞器的形状
下面的中心和大小都是对上面那个套住动态障碍物的绿色碰撞框的调整,一个是框的中心坐标的调整,一个是框的大小的调整
关于切割,一般都是默认不切割的,当我们选择切割后就会出现下面这个面板
当我们选择切割之后再回到inspector旁的导航面板的烘焙选项中,我们会发现原本在处于关闭状态的动态障碍物处覆盖的导航网格被动态障碍物 “切割开来”,由可通行变为不可通行
但是这一次的切割导航网格和不可通过并不像上一次那样是静态的
这次是动态的!!
当我们开始游戏的时候,每当挂载了导航网格障碍且选择了切割的动态障碍物移动一下,导航网格组件就会对当前地图中动态障碍物所处部分重新进行一次网格渲染,实现动态实时更新导航网格
参数讲解:
移动阈(yu)值:这个参数是用来规定每当动态障碍物移动多远的距离才对动态障碍物所处位置重新进行一次导航网格渲染
静止时间:这个参数规定了当动态障碍物停下来后多久多久才对动态障碍物所处位置重新进行一次导航网格渲染
仅在静止时切割:这个勾上了上面两个参数才有意义,如果没有勾上的话,则动态障碍物在移动的时候就会一直对其位置进行动态网格渲染 --- 这个效果好但是对计算机的性能消耗大
1.选中导航组件,然后在烘焙选项处有这么一个选项:

掉落高度:规定游戏物体能从多高的地方掉下来
但是能够掉落的前提是游戏物体所处的平台是支持跳跃的,所以我们需要先对可以掉落,能进行跳跃的平台进行一个设置:
选中平台,然后选中导航网格组件中的对象选项
然后选中Generate OffMeshLinks(生成网格链接)
此时这个平台才能够生成分离网格链接,实现导航时的掉落和跳跃等功能
选择好后重新烘焙一次就可以得到上面这个分离网格链接了
(生成分离网格链接的前提是生成网格链接,所以我们需要先选中平台然后选择导航中的对象选项来生成网格链接)
对于第二个参数 : 跳跃距离: 这个参数是指从平台上跳跃时的最远跳跃距离(跳跃只能够在生成了网格链接的游戏对象之间进行)
如果我们想生成自己的跳跃网格链接(即我们自己选定两个位置,然后我们可以在这两个位置上设定跳跃网格链接)该怎么做呢?
这就需要我们添加一个新的组件 --- off Mesh Link
1.在我们选定两个位置上各创建一个游戏物体
2.在这两个游戏物体上的任意一个挂载off Mesh Link组件
然后将我们作为起始位置的游戏物体在层级中的文件拖到起始的框中(结束同理)
双向选项被打开的话:我们可以从起始位置“跳”到结束位置,也可以从结束位置“跳”回起始位置
已激活选线:打开的时候这个组件生成的自定义离线网格链接可以使用,关闭的时候就不可使用
自动更新位置选项:当我们移动作为起点和终点的游戏物体时,如果这个选项没打开的话,这个组件生成的离线网格链接不会随着两个物体的移动而跟着移动,但是如果打开的话就会跟着起点和终点就会跟随着物体移动