Unity自动寻路的简单演示

Unity3D 自带有自动寻路的组件,我也是初次学习,写下心得供各位参考参考。。

先直接写下使用方法,先明白怎么用,熟了之后再去了解为什么会这样。

就用一个鼠标点击寻路来演示吧。。。

首先我们新建一个plane和几个cube来构建一个简单的场景,如下图所示:

图中的球是我们要用来控制的角色,需要将除了球以外的所有物体勾选上Inspector窗口里的Navigation Static:


接下来,选择菜单栏->Window->Navigation打开Navigation窗口,选择每个物体,勾选上,Navigation Static选项,下面的选项暂时可以不用管。将障碍物的Navigation Layer选项选择为Not Walking,plane的Navigation Layer选择为Default。


全部搞定以后点击窗口底部的Bake按钮,场景会变成如下样子:

浅蓝色那一层就是我们创建出的路径图了。是不是很简单。。。

下一步我们来控制我们的角色。

选择圆球,单击->Component->Navigation->Nav Mesh Agent来给圆球添加一个寻路代理组件(里面的参数先别管,都默认就行了,等熟悉了再去慢慢研究)。

然后给通过一段代码来控制圆球,控制圆球的代码如下:

using UnityEngine;
using System.Collections;

public class NavMeshMove : MonoBehaviour {

    private NavMeshAgent m_nma;//寻路代理组件
    private Camera m_camera;
    private RaycastHit m_hitPoint;
    private Ray m_ray;
    private LayerMask m_mask;

	// Use this for initialization
	void Start () 
    {
        m_nma = GetComponent<NavMeshAgent>();
        m_camera = Camera.main;
        m_mask = 1 << 8;
	}
	
	// Update is called once per frame
	void Update () 
    {

        if (Input.GetMouseButtonDown(1))
        {
            Physics.Raycast(m_camera.ScreenPointToRay(Input.mousePosition), out m_hitPoint, Mathf.Infinity, m_mask);
            Debug.Log(m_hitPoint.point.ToString());
            m_nma.SetDestination(m_hitPoint.point);
        }
	}
}

将代码附到圆球上去。运行,鼠标点击平面任意位置,小球变开始演示寻路效果了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值