Unity3D中的自动寻路

Unity3D中自动寻路的功能:

概述:

别人写的教程,非常详细,细节我就不赘述了。只写一些自己的总结:

1. 什么是导航网格:

“导航网格”,规定了使用自动寻路的GameObject所能或者不能通过的地方。

2. 如何生成导航网格:

菜单栏: Window——Navigation,打开导航网络控制面板。

选择想要生成网格的游戏物体,比如一个Plane,在”导航网格控制面板“中将“Navigation Static”打钩,点击右下角的Bake,烘焙路径,则可以看到自动生成的区域。Navigation Area则决定了这个区域是Walkable还是not Walkable或者是Jump。

3. 如何应用导航网格:

在自己的Player上添加一个“Nav Mesh Agent”组件,这个组件实现了自动寻路的功能,可以看做是一个封装。设计者只要使用这个组件就好了,具体可以看官方说明。

举个例子:

using UnityEngine;
using System.Collections;

public class SetHeroDes : MonoBehaviour
{
    public Transform ds;//用来确定目的地坐标的游戏物体的Transform
    private Vector3 origin;//存储导航网格代理的初始位置
    private NavMeshAgent nma;//存储导航网格代理组件

    void Start()
    {
        nma = gameObject.GetComponent<NavMeshAgent>();   //取得导航网格代理组件
        origin = transform.position;     // 存储一下这个脚本所挂载游戏物体的初始位置
        nma.SetDestination(ds.position); // 关键点:操作NavMeshAgent组件,设置自动寻路的目标位置为我们通过ds所指定的点。
    	}
}


把这个脚本挂到想要自动寻路的游戏物体,并指定目标位置游戏物体。

简单粗暴有木有?

nma.SetDestination(ds.position);

这句代码设置后,所挂载该脚本的游戏物体就开始依据我们通过Bake生成的导航网格自动寻路了。这个过程中,会自动绕过障碍物(通过Bake将这类游戏物体烘焙为not walked)。

4. OffMeshLink是什么?

按照我的理解,这个组件提供了不同的高度和导航网格中断的处理方案,详情看教程吧。


下面是别人教程的地址,非常详细:

有些教程里面的素材如果没有,通通用cube代替,学到东西才是真的。我看这些教程时,由于是几经转载,都看不到图的,就自己随便弄个cube,Metrial之类的搞完再说。


Unity里面的自动寻路(一)

Unity里面的自动寻路(二)

unity自带寻路Navmesh入门教程(一)

unity自带寻路Navmesh入门教程(二)

unity自带寻路Navmesh入门教程(三)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值