NavMesh导航网格寻路

NavMesh是Unity自带的一种寻路系统,能够轻松简单地实现AI自动寻路效果。

自动寻路是AI中的一个十分重要的分支,寻路算法一般也是十分复杂的。但Unity为我们提供了十分成熟的NavMesh组件用以简单地解决这一问题,使初学者也能够轻松实现寻路功能。

NavMesh寻路系统的操作步骤大致如下:

  • 对场景中的物体进行标记,然后进行路径烘培,产生表格数据。
  • 为需要实现寻路功能的物体添加NavMeshAgent组件。
  • 通过NavMeshAgent组件的属性与方法实现寻路移动功能。

NavMesh的使用如下图所示:

【1】标记与烘培

若想要让你的游戏场景被NevMesh所“认可”,场景内的相应物体都必须被指定为Navigation Static。我们可以通过Navigation菜单栏中设定其状态,也可以直接在Inspector中把物体设定为Static。

设定完成之后,就可以通过Navigation菜单栏的Bake选项卡来对游戏场景进行烘培。烘培的效果是肉眼可见的,我们可以直接在游戏场景中看到场景的烘培效果,如官方图所示:

其次,在Bake选项卡中还可以设定寻路系统的一些细节,例如:

  • Agent Radius:Agent的中心与障碍物的距离。
  • Agent Height:Agent可通过的最低高度。
  • Max Slope:Agent可爬上的最高坡度。
  • Step Height:Agent可上的台阶高度。

【2】添加NavMeshAgent组件

烘培完成之后直接将此组件添加到需要寻路的物体上即可。

NavMeshAgent组件中也有很多参数可以修改,以实现不同的寻路效果。

  • Speed:Agent的最高速度。
  • Angular Speed:最大的转向速度。
  • Acceleration:Agent达到Speed过程中的加速度。
  • Stopping Distance:在距离目的地多远的距离停下。
  • Auto Braking:在终点是否会自动停下。
  • Priority:Agent的权重。

【3】用脚本操作NavMesh

接着实现一个简单的脚本,为Agent设定目的地即可。例如:

 1 public class NavMove : MonoBehaviour
 2 {
 3     public Transform goal;
 4     NavMeshAgent agent;
 5     void Start()
 6     {
 7         agent = GetComponent<NavMeshAgent>();
 8     }
 9     void Update()
10     {
11         agent.destination = goal.position;
12     }
13 }

对于更加复杂的功能以及其实现原理,可以通过Unity3D的官方文档查看。

 

转载于:https://www.cnblogs.com/inkice/p/10833236.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值