unity 3D:自动寻路

首先,搭建一下场景,场景要求:有遮挡,设置好不可走区域为navigation static 以及 not walkable。在人身上添加Nav Mesh Agent。设置好后勾选显示导航网格,就可以看见哪些地方是可走的,哪些是不可走的。下面是我搭建的一个小场景:

unity 3D:自动寻路_第1张图片


人的设置如下:


unity 3D:自动寻路_第2张图片


接着编写代码,代码如下:

using UnityEngine;
using System.Collections;

public class test : MonoBehaviour {
    
    NavMeshAgent ag;
    void Awake() { 
    }
	// Use this for initialization
	void Start () {

        ag = GetComponent();
	}
	
	// Update is called once per frame
    void Update()
    {
        //如果鼠标按下了左键
        if (Input.GetMouseButtonDown(0))
        {
           
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//返回一条射线从摄像机通过鼠标点击的位置
            RaycastHit hit;
            if (!Physics.Raycast(ray, out hit)) {                       //检测没有交点
                return;
            }
            Vector3 pos = hit.point;
            ag.destination = pos;                                       //如果有交点,hit点就是要走到的点
            if(ag.pathStatus==NavMeshPathStatus.PathInvalid)            //点是有效的
            {
             return;
            }
        }

    }
   
}


下面展示运行之后的效果就是我点击哪里,他就会自动寻路:

unity 3D:自动寻路_第3张图片




你可能感兴趣的:(unity,3D)