在LayaBox中使用Unity的导航网格,实现AI自动寻路
使用这个这个库的好处在于,你不必了解AStar算法,一样可以使用AStar算法来进行AI导航。只需要调用接口即可。
下面我给出LayaBox的示例项目地址和Unity导出网格示例项目地址,各位按需克隆下来即可
Unity示例项目:https://github.com/linkliu/ExportNavMesh
LayaBox示例项目:https://github.com/linkliu/LayaNavMesh
原始的教程在http://ask.layabox.com/question/47899这里,大家可以去看看这里也行
这次的实例会从下面三个方面来讲解:
- Laya要用到的导航组件库NavMesh.js
- Unity如何将Navmesh数据导出成json文件【Laya中用到】
- Unity中用到的NavMeshComponents
开始之前,说一下相关软件的版本
LayaAir 2.9 ,Laya引擎库2.7.1,Unity 2018.4.11f1
1.Laya中用到的导航组件库NavMesh.js
可以直接在Unity中对导航网格进行编辑,非常的方便。
NavMesh.js可以直接从这里去拿https://github.com/lear315/NevMesh.Js/tree/main/build
名字可能跟我的不一样,但是里面内容完全一样,我这里是强迫症发作,把Nev改成了Nav。然后只要拿NavMesh.js和NavMesh.d.ts这两文件就行了。NavMesh.js请放在Laya项目的bin/libs目录下面。NavMesh.d.ts放在项目的libs文件夹中。并且在bin/index.js中增加loadLib(“libs/NevMesh.js”),注意需在loadLib(“js/bundle.js”);前面。完成上面这些步骤,就把导航组件库NavMesh.js放到我们的项目中了
2.Unity如何将Navmesh数据导出成json文件
将Unity的导航网格数据导出成LayaBox需要的json数据,需要用到两个关键文件,一个是把导航网格转换成.obj文件的NavMeshExport.cs。另一个是Python自动转换脚本convert_obj_three.py,这两个文件的获取方式,我贴在下面:
NavMeshExport.cs:https://github.com/lear315/NevMesh.Js/tree/main/unity
convert_obj_three.py: https://github.com/lear315/NevMesh.Js/tree/main/python
NavMeshExport.cs是一个Unity中的一个C#脚本,只要放到Unity中即可,便会在Unity中生成一个导出菜单,合并在LayaBox的导出菜单中。如下图
点击Export按钮,就会把当前的导航网格导出到ExportNavMesh文件中,里面就是需要下一步需要的.obj文件。
convert_obj_three.py是一个python脚本,所以各位需要安装python,并且配置配置好python环境,并且把python添加到系统的环境变量中去。
这个脚本的使用方法是 python convert_obj_three.py -i xx.obj -o xx.json,这个命令是把上一步生成的.obj文件转换成.json文件,这样我们就能在LayaBox中使用这个.json文件来进行AI导航了。
我的示例项目中已经做好了一键obj转json的功能,具体的用法是:选中你要转换的obj文件,然后右键,菜单选择Convert Navmesh to Json,就回自动在当前目录下生成一个同名的.json文件。这个就是LayaBox需要的文件,把这个文件放在LayaBox中的一个目录中。
3.Unity中用到的NavMeshComponents
Unity中的导航网格的生成需要用到NavMeshComponents组件,目前这个组件Unity没有集成到Unity编辑器中,至少Unity2018以及之前的版本没有。但是Unity官方把它们放在Github上,地址在这里:https://github.com/Unity-Technologies/NavMeshComponents
克隆下来后,你只需要把Assets/NavMeshComponents这个文件复制到自己的项目中就行了,其他的东西可以不用。
NavMeshComponents的用法我就不细讲了,各位可以到https://docs.unity3d.com/Manual/NavMesh-BuildingComponents.html查看,也可以看这个中文的的博客https://blog.csdn.net/wangjiangrong/article/details/88823523各位按需观看吧。
总结
完成上面的三个步骤后,准备工作都OK了,具体的使用,各位可以去看我的LayaBox示例项目吧,哪里有完整的代码。
感谢各位耐心看完。
希望它能帮到你或者帮你找到思路(^_^)选个表情,或者留个评论吧!