【Unity】AI-Navigation导航模块

这篇具有很好参考价值的文章主要介绍了【Unity】AI-Navigation导航模块。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity导航模块

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

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

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

ai navigation,c++GL图形学与游戏,unity,游戏引擎,学习

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

ai navigation,c++GL图形学与游戏,unity,游戏引擎,学习
ai navigation,c++GL图形学与游戏,unity,游戏引擎,学习

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

ai navigation,c++GL图形学与游戏,unity,游戏引擎,学习

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

ai navigation,c++GL图形学与游戏,unity,游戏引擎,学习

脚本如下:

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()
    {

    }
}

效果如下:

ai navigation,c++GL图形学与游戏,unity,游戏引擎,学习

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

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的物体移动到碰撞点
            }
        }
    }
}

以上。文章来源地址https://www.toymoban.com/news/detail-519219.html

到了这里,关于【Unity】AI-Navigation导航模块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity的AI自动寻路navigation基本用法

     1.场景中的地面和障碍物都设置成静态的,  2.给需要寻路的AI物体添加Nav Mesh Agent 组件, 3在window下面找到navigation,打开选all,调好参数后点击bake 4.运行时用代码实现鼠标点击屏幕一点,AI就自动避让障碍物到达(代码在下面)      

    2024年02月11日
    浏览(43)
  • 【ROS】ros导航navigation模块学习

    😏 ★,° :.☆( ̄▽ ̄)/$: .°★ 😏 这篇文章主要介绍navigation导航模块学习与算法示例。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路🥞 导航模块是机器人系统中的一个重要组件,用于实现机器人在

    2024年02月13日
    浏览(39)
  • Unity基础到入门-导航系统(Navigation)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Unity 3D导航系统( Navigation ) Unity 3D Navigation(导航)是用于实现动态 物体自动寻路 的一种技术,它将游戏场景中复杂的结构关系简化为带有一定信息的网格,并在这些网格的基础上通过一系列相应的计

    2024年02月03日
    浏览(45)
  • 【Unity】导航 Navigation 设置:窄桥、隧道、斜坡、台阶、坠落、跳跃

    Navigation 是导航网格的核心模块,可以实现对 Agent(代理)、Area(区域)、Bake(烘焙)、Object(对象)的配置。 烘焙设置可以调整烘焙的方式,如代理半径、可移动斜坡角度等。 Agent Radius :代理半径,这个代理半径决定了烘焙路面距离墙面的距离,有时两面墙距离过近时可

    2024年02月04日
    浏览(47)
  • Unity3D学习记录03——Navigation智能导航地图烘焙

    首先还是在Package Manager中安装AI Navigation 接着选择我们场景的地面,右键,找到AI的NavMesh Surface,它会为我们的Ground添加一个叫NavMesh Surface的子物体 在Inspector窗口中可以看到它的详细的参数: 图中的R,H为你人物的参数,45°为你的人物可以爬行的最大角度 Agent Type里面可以改

    2024年02月08日
    浏览(52)
  • Unity零基础到入门 ☀️| 万字教程 对 Unity 中的 Navigation导航系统基础 全面解析+实战演练【收藏不迷路】

    📢博客主页:https://blog.csdn.net/zhangay1998 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 呆呆敲代码的小Y 原创,首发于 CSDN 🙉 📢未来很长,值得我们全力奔赴更美好的生活✨

    2023年04月08日
    浏览(46)
  • 【Jetpack】Navigation 导航组件 ① ( Navigation 引入 | Navigation 特点 | Navigation 重要组件 | Navigation 使用流程 )

    Android 开发中 , 最常用的 UI 架构 就是 使用一个 Activity 嵌套多个 Fragment , 这就需要 对 Fragment 进行管理 ; 在传统的 Android 开发中 , 使用 FragmentManager 和 FragmentTransaction 管理 Fragment 的生命周期 , Fragment 页面切换 , Fragment 切换动画设置运行 , Fragment 与 Fragment / Activity 之间的数据传

    2024年02月09日
    浏览(43)
  • React Navigation 使用导航

    在 Web 浏览器中,您可以使用锚标记链接到不同的页面。当用户单击链接时,URL 会被推送到浏览器 历史记录堆栈 中。当用户按下后退按钮时,浏览器会从历史堆栈顶部弹出该项目,因此活动页面现在是以前访问过的页面。React Native 不像 Web 浏览器那样具有全局历史堆栈的内

    2024年02月11日
    浏览(52)
  • 【Jetpack】Navigation 导航组件 ③ ( 为 Navigation Graph 页面跳转 action 添加跳转动画 )

    代码地址 : CSDN ( 本博客代码快照 | 推荐下载 0 积分 ) : https://download.csdn.net/download/han1202012/87951959 GitHub ( 可能已经覆盖 ) : https://github.com/han1202012/Navigation 打开 \\\" res/navigation \\\" 下的 Navigation Graph 的 Xml 配置文件 , 进入 Design 编辑模式 , 选中一个 代表 Fragment 页面跳转 Action 对应的箭

    2024年02月11日
    浏览(58)
  • Android Navigation 导航切换fragment用法

    对于Android Navigation组件的导航到Fragment,您可以按照以下步骤操作: 首先,在您的项目的build.gradle文件中添加Navigation依赖: 在你的res目录下的navigation文件夹中创建一个nav_graph.xml文件,并定义您的导航图。 在您的布局文件中,添加NavHostFragment作为导航的目标。 在您的Activi

    2024年02月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包