前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Unity】AI-Navigation导航模块

【Unity】AI-Navigation导航模块

作者头像
DevFrank
发布2024-07-24 15:00:26
410
发布2024-07-24 15:00:26
举报
文章被收录于专栏:C++开发学习交流

Unity导航模块

看到一篇自动寻路车辆的Unity仿真,简单使用一下导航模块。

前面已经创建好了一个小车的场景,因此直接来到导航模块。

首先将地面及静态物体设置为navigation static(这是后面bake的前提):

在这里插入图片描述
在这里插入图片描述

然后打开导航组件模块,选择Bake烘培:

在这里插入图片描述
在这里插入图片描述

烘培好地图后,为Car添加NavMeshAgent组件:

在这里插入图片描述
在这里插入图片描述

这时,Car知道自己要Nav了,但还没有目标地点,我们先创建一个空对象TargetObject,并创建Navigation脚本,将两者关联:

在这里插入图片描述
在这里插入图片描述

脚本如下:

代码语言:javascript
复制
using UnityEngine;
using UnityEngine.AI;
using System.Collections;

//小车AI导航demo
public class Navigation : MonoBehaviour
{

    public Transform TargetObject = null;

    void Start()
    {
        if (TargetObject != null)
        {
            GetComponent<NavMeshAgent>().destination = TargetObject.position;
        }
    }
    void Update()
    {

    }
}

效果如下:

在这里插入图片描述
在这里插入图片描述

2022.10.26 上面只是实现了固定目标地点的导航,每次都要修改目标位置然后重新运行,有点麻烦。下面再记录一种通过鼠标点击确定目的地并实现导航的方法,依然使用的Navigation脚本:

代码语言:javascript
复制
using UnityEngine;
using UnityEngine.AI;	// 导航系统需要的命名空间
using System.Collections;

//小车AI导航demo
public class Navigation : MonoBehaviour
{

    //public Transform TargetObject = null; //定义空物体
    private NavMeshAgent agent; //导航网格代理组件

    void Start()
    {
        // 移动到空物体所在位置
        //if (TargetObject != null)
        //{
        //    GetComponent<NavMeshAgent>().destination = TargetObject.position;
        //}
        agent = GetComponent<NavMeshAgent>();   //获取组件
    }
    void Update()
    {
        // 单击鼠标右键
        if (Input.GetMouseButtonDown(1))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);    //鼠标指针射线
            RaycastHit hit; //碰撞信息
            bool res = Physics.Raycast(ray, out hit);   //射线碰撞检测
            if (res)
            {
                Vector3 point = hit.point;  //如果检测到碰撞,获取碰撞点
                agent.SetDestination(point);    //将添加了NavMesh的物体移动到碰撞点
            }
        }
    }
}

以上。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Unity导航模块
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档