Unity NavMeshAgent 之 快速实现点击任意点寻路

2025-10-20 13:39:14

1、打开Unity,新建一个空工程,具体如下图

Unity NavMeshAgent 之 快速实现点击任意点寻路

2、在场景中新建一个“Cube”和“Plane”,并且调整好相机视角,便于观察,然后设置“Plane”为静态“Static”,具体如下图

Unity NavMeshAgent 之 快速实现点击任意点寻路

3、选中“Plane”,然后通过“Window”-“Navigation”,打开“Navigation”窗口,在“Navigation”里选中“Bake”面板,点击右下角进行“Bake”烘焙,如果没有保存场景,会提示保存,烘焙完之后,“Plane”上会有蓝色图块,工程里面会多一个文件夹保存烘焙结果,具体如下图

Unity NavMeshAgent 之 快速实现点击任意点寻路

Unity NavMeshAgent 之 快速实现点击任意点寻路

4、选中“Cube”,添加一个“NavMeshAgent”组件,具体如下图

Unity NavMeshAgent 之 快速实现点击任意点寻路

5、在工程中新建一个脚本“NavTest”,然后打开进行脚本编辑,具体如下图

Unity NavMeshAgent 之 快速实现点击任意点寻路

6、在打开的“NavTest”脚本上编辑代码,首先设置“NavMeshAgent”导航代理变量,然后获得“Cube”上的导航代理赋给变量,最后在Update中,实时获取鼠标的点击,来设置导航代理的寻路目标,具体如下图

Unity NavMeshAgent 之 快速实现点击任意点寻路

7、“NavTest”脚本具体代码如下:

using UnityEngine;

using UnityEngine.AI;

public class NavTest : MonoBehaviour {

    private NavMeshAgent agent;

// Use this for initialization

void Start () {

        agent = GetComponent<NavMeshAgent>();

}

// Update is called once per frame

void Update () {

        RaycastHit hitInfo;

        if (Input.GetMouseButtonDown(0)) {

            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            if (Physics.Raycast(ray, out hitInfo)) {

                agent.SetDestination(hitInfo.point);

            }

        }

}

}

8、脚本编译正确后,回到Unity界面,把脚本“NavTest”赋给“Cube”,具体如下图

Unity NavMeshAgent 之 快速实现点击任意点寻路

9、运行场景,鼠标点击“Plane”任意一点,“Cube”都会自动导航寻路过去,具体如下图

Unity NavMeshAgent 之 快速实现点击任意点寻路

10、到此,《Unity NavMeshAgent 之 快速实现点击任意点寻路》讲解结束,谢谢

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢