本文主要是介绍Unity - 新版NavMesh动态烘培,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Unity - 新版NavMesh动态烘培
Unity的新版NavMesh更加易用效率更高,而且支持动态烘培,这一点特别重要,可以很简单的就实现很多之前处理起来比较复杂的功能。比如现在有个需求,怪物追随玩家,碰到陷阱后玩家跳过,怪物无法跳过碰到陷阱则死亡,但是后续的怪物可以踩着尸体过去。
这个功能之前的实现可能是这样的:在陷阱边缘停止导航,手动控制移动,碰到陷阱死亡停留原地变成地面…现在用新版NavMesh的动态烘培,只要很少的代码就可以实现了。
动态烘培
准备:从官方Github下载源码,拷贝如下代码:
Assets\Examples\Scripts\LocalNavMeshBuilder.cs
Assets\Examples\Scripts\NavMeshSourceTag.cs
Assets\NavMeshComponents下所有文件
注意这些代码都可以根据需求直接修改
- 添加LocalNavMeshBuilder,设置动态烘培的区域。
- 对动态烘培的物体,添加NavMeshSourceTag,注意默认的动态烘培是根据物体的Mesh计算的,也支持根据包围盒包围球,需要自己改代码。静态的物体不要勾选Batching Static。
- 动态烘培不需要加NavMeshSurface,但加上可以在编辑器界面看效果。
- 实现上述需求只需碰到陷阱时关闭NavMeshAgent,并添加NavMeshSourceTag就行。
不过不知道新版NavMesh为什么不直接集成在编辑器中,可能因为还有Bug,比如最近碰到的动态烘培时烘培的物体运动时超过了初始时的最低点,导航网格会抖动的问题,解决办法是把后面的墙当作动态烘培的对象但是对游戏内容没有影响,高度拉高一点运动时不超过下线就可以。
新版NavMesh链接:https://github.com/Unity-Technologies/NavMeshComponents
这篇关于Unity - 新版NavMesh动态烘培的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!