-
Notifications
You must be signed in to change notification settings - Fork 489
navmesh寻路
JiangZhiYong edited this page Dec 7, 2020
·
7 revisions
基于unity的navmesh寻路,用于将unity中的三角网格行走层数据导入服务器中,用于服务器进行怪物的AI、玩家寻路、技能战斗等判断。寻路方式采用A*算法。服务器算法参考game-ai项目,客户端操作参考Unity NavMesh数据导出演示客户端
- 将地图取名为map101,创建行走层对象xingzouceng,添加Mesh Renderer,Mesh Filter,Mesh Collider组件
- 烘培行走层对象
- 点击测试地图大小,修改地图范围
- 点击生成巡逻数据
- 在unity客户端工程中将生成的101.navmesh数据复制到工程目录中,运行服务器检测客户端
多边形寻路参考PolygonNavMesh
原理:
- 将unity导出的数据生成凸多边形
- 找出所有凸多边形共享的边
- 使用A*算法找出起点到目标点所经过的多边形列表
- 使用漏斗算法找出顶点坐标
unity寻路网格导出脚本PolygonNavMeshWindow
三角形寻路参考TriangleNavMesh
原理同多边形
- 多边形寻路和三角形寻路由于原理相同,性能消耗差不多,由于多边形合并了三角形,速度稍微快一些;顶点寻路相比于多边形寻路慢了5~40倍
- 多边形寻路需要导出的寻路数据在行走层中没有额外的顶点,共边顶点坐标需要一致,顶点寻路由于由于采用阻挡区三角形顶点寻路,因此没有此限制,但是增加了额外的阻挡区数据
- 多边形寻路支持3D寻路,顶点寻路只能平面寻路
网站:https://jzyong.github.io/game-server/
QQ交流群:144709243