首先,搭建一下场景,场景要求:有遮挡,设置好不可走区域为navigation static 以及 not walkable。在人身上添加Nav Mesh Agent。设置好后勾选显示导航网格,就可以看见哪些地方是可走的,哪些是不可走的。下面是我搭建的一个小场景:
人的设置如下:
接着编写代码,代码如下:
using UnityEngine;
using System.Collections;
public class test : MonoBehaviour {
NavMeshAgent ag;
void Awake() {
}
// Use this for initialization
void Start () {
ag = GetComponent<NavMeshAgent>();
}
// 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;
}
}
}
}
下面展示运行之后的效果就是我点击哪里,他就会自动寻路:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)