Unity3D中寻路系统NavMesh的使用

在游戏中,基于场景的自动寻路是AI最基本的功能,许多rpg游戏中为了降低玩家的输入负担,也加入了自动寻路的功能。而在Unity3d中内置了NavMesh的自动寻路系统,当我们需要实现寻路系统时可以直接调用内置组件实现功能。

NavMesh寻路的原理

自动寻路算法的发展要追溯到最早的图论算法——Dijlkstra算法,以及基于该算法思想产生的Astar算法。(可以去看我之前的一篇博文:在Unity中实现Astar寻路算法

以上算法都是以一个单元格作为路径选择的最小单位,通过维护路径的最小权重找到最优路径。

Unity3d内置的寻路系统使用的是网格导航算法。该算法的与前文提到算法的不同点在于,该算法基于网格顶点为寻路单位进行。

假设我们已经确定了寻路的起点、终点,并获得了网格化的场景map,驯鹿的具体算法如下所示:

  1. 找到当前网格的一条边,使终点位于起点与该边两点的连线之间;
    在这里插入图片描述

  2. 获取起点与下一个邻边两顶点的连线。若连线处于当前的左右边界之间,则更新为新的左、右边界,反之则维持原边界;
    在这里插入图片描述

  3. 以此类推,当某一邻边的两条连线均在边界外,图中所示为右侧,则将当前的右边界点作为“拐角点”,将此拐角点作为新的顶点,进行新一轮寻路;

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值