游戏中的寻路算法研究

1)Unity NavMesh研究

思考:毫无疑问,unity中自带的navmesh寻路是比较健全的,无奈在服务器中无法使用,这样子我们没办法做怪的导航,但是可以先体验下都有哪些api,并且可以可视化的看效果。

1)打开导航网格
    Window->AI->Nagivation
    基于几何体的环境生成的

    点击到哪个地方,就发射一条摄像,检测下碰撞。

2)OffMeshLink组件: 打开后可以跳过去。

3)Unity中重新生成网格数据
	Navigation:
        Agents // 数据
        Bake

4)扩展
    我们不仅仅是为了在Unity中搞,而是要生成到服务器中,实现NPC的导航。

5)原理
    生成多边形NavMesh小块
    点的信息,边界信息,相邻信息,这样子就可以根据起点和终点去实现了。 Unity是根据AStar算法。 根据点依次移动,就生成了导航。

6)障碍物的规避
    和其它代理物,可以相互避开。 ==》 RVO(考虑到速度)
    
    2种方式:
        一种是改变导航网格的信息,这样子肯定能找到目标, 开启障碍(NavMesh Obstacle的Crave)的。 // 消耗高
        一种是一直尝试走,查找失败了。
    

7)    
    Navigation
    Object
    点击Mesh Renderers(带有Mesh Renderer脚本的都会列出来)
    全选
    勾选Navigation Static,此时就会发现Navigation Area下拉框变为可以选择的
    点击Scene Filter下的All
    点击Bake选项卡下的Bake按钮,就会发现生成的导航网格

8)体素
    将场景中的物体,变成一个个小块。

2)优先队列的研究

1)用途:
  海量定时器:如活动3天后开,避免轮询。

  取出前面几个:

  寻路搜索算法:  A*算法

2)数据结构:二叉堆。

思考:这个不仅仅是定时器,也为下面的A*学习打基础,毕竟A*是基于权重的,既然是基于权重,那么优先队列中的权重就能用上了。

3)A*算法研究

1.jps // 更极致的格子寻路算法

2.AStar较为全能,即可用于三角形,又可格子

4)漏斗算法

5)导出NavMesh到服务器使用

参考资料:

PathFinding.js (qiao.github.io)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值