bake动态生成的地图

bake动态生成的地图


在跟着siki学院中的塔防游戏教程时,我设想能不能动态生成地图,这个挺好实现的,但是有个问题就是,如果动态生成了地图,就没有办法跟着教程的方法去设置敌人的移动路线了,于是我就想利用unity里面的自动寻路系统。

这里遇到的问题是以前我只能在创建游戏时设置它的Navigation_static,现在由于地图是动态生成的,这个方法显然是不行的。

后来我发现在github中有个https://github.com/Unity-Technologies/NavMeshComponents组件,这个组件使用起来也非常地方便。只需要将特定文件夹复制到游戏项目中即可。
bake动态生成的地图
bake动态生成的地图
我主要是调用了NavMeshSurface这个类,可以先将此组件添加到MapManager(随便已有的Object)中,然后设置好它的参数,当然也可以动态AddComponent,随便

然后动态生成完地图之后,再调用NavMeshSurface中的BuildNavMesh()方法,就这样就可以bake动态的地图了。这里需要注意一个地方是NavMeshSurface默认是对所有LayerMask都进行bake。我是给动态生成的地图中的道路添加特定的LayerMask来解决。
bake动态生成的地图
在unity社区中也有这方面的教程https://unity3d.com/cn/learn/tutorials/topics/navigation/baking-navmesh-runtimes