目录
动态障碍物
有时候我们希望在游戏中,有些障碍物是可以移动的,比如下面中间的墙。
当移动完后,角色就可以到达墙的另一边了。此时,墙就是一个动态障碍物
问题
如果墙是静态障碍物,就会产生一个问题
如上图,即使我移开了墙,中间的网格还是灰色区域,也就是并没有渲染导航网格,即角色仍然不能穿越这面墙的区域。
解决方法
将墙不再设置为静态导航物体
重新烘焙
烘焙完成后,会发现中间这面墙不会再影响导航网格的渲染,那么角色进来经过该区域,也就是角色可以穿墙。
障碍物组件(Nav Mesh Obstacle)
此时,需要给这面墙添加一个组件
此时,角色就不能穿墙了。
参数
形状
障碍物本身有碰撞器,而碰撞器的形状就可以在这里设置为盒子或胶囊
中心和大小
默认即可,如果选默认,碰撞器边框大小刚好和物体一样大
切割
默认是不切割的,也就是最省性能的
当勾选切割时,则这面墙会动态地重新产生一个烘焙,烘焙出新的网格
当我们运行游戏,移动这面墙时,我们会发现,它会重新计算墙的导航网格,重新进行烘焙,这就是动态烘焙。

移动阈值和静止时间
移动阈值就是移动多长距离才进行重新烘焙,静止时间就是要静止多长时间才进行重新烘焙,只有移动阈值和静止时间都满足条件后,才会进行重新烘焙。并且需要勾选仅在静止时切割,移动阈值和静止时间才会生效。
如果不勾选仅在静止时切割,无论如何移动,都会立即切割,重新烘焙,这对于性能的消耗非常高。
网格链接
掉落高度
掉落高度就是角色可以掉落的最大高度
比如这里设置为10。
此时还需要对支持跳跃的台子设置生成网格链接
最后,重新烘焙
这里就会生成一些圆圈链接标志,即可以通过链接,从一个圆圈位置到达另一个圆圈位置。
跳跃距离
也就是角色的跳跃距离,比如现在想要角色在两个台子间进行跳跃。
首先这两个台子都要设置能生成网格链接(且只能设置两个,设置多个物体生成网格链接可能会无法生成)
然后设置跳跃距离,并进行烘焙即可。
注意,上图会存在一个问题,在两个平台的导航网格区域(蓝色区域)很窄,会导致角色无法到达圆圈区域,从而导致无法进行跳跃,所以需要设置一些代理宽度,让导航网格区域变宽
这样,导航网格区域足够宽,就能正常跳跃了
特定链接
有时候,我们希望人物能在特定的两个位置进行移动,类似于传送的效果。
先创建两个立方体作为传送的位置
现在的需求就是,角色到达一个立方体的位置时,就能被传送到另一个立方体的位置
在其中一个立方体中添加off mesh link组件
然后设置起始点和结束点(分别为两个立放体的位置)
直接写坐标会比较麻烦,最好就直接在场景中拖动起始点和结束点,也就是黄色小方块
到达指定位置后,直接点击另一个,就能实现传送了。或者直接点击墙后面的点,角色也会自动到达台子上的点,并进行传送
参数表
Auto Update Position,直接在场景窗口中更新位置不会看出勾选与不勾选的区别,可能新版的意思是在脚本中移动了端点