AI Navigation导航系统_unity基础开发教程

AI Navigation导航系统

  • 安装插件
  • 烘焙导航系统
  • 障碍物创建
  • 人物的AI导航
  • 动态障碍物

在unity编辑器中,有一个灰常好用的插件:Navigation。有了它1,你就可以实现人物自动走到你鼠标点击的位置,而且还会自动避开障碍物,下面就教大家如何进行创建与使用。(文章中unity版本:Unity2021.3.20f1c1)

安装插件

虽然unity编辑器里有自带,也够用,但是要知道有这个专业的插件,了解更加深入,可不安装直接跳过。

  1. 选择Window,点击Package Manager
    在这里插入图片描述
  2. 在窗口左上角点击加号,
    点击Add package by name…
    在这里插入图片描述
  3. 在name输入框中输入com.unity.ai.navigation
    然后回车
    在这里插入图片描述
  4. 然后卡顿一下(正常现象,不必担心),会出现安装的进度条,
    然后安装成功
    在这里插入图片描述
    在这里插入图片描述
  5. 如果关闭Package Manager的窗口后,你发现你的unity编辑器右上角会出现金色字样的小框框,不用担心,这是正常现象。
    由于这个package包里的部分模块处于实验状态,所以这个框框是为了提醒你。如果你想更详细的了解的话,可以点击这个金色字样的小框框,然后选择 Why am I seeing this
    在这里插入图片描述

烘焙导航系统

在烘焙导航系统之前先简单的创建一个场景(这里我直接使用的之前文章里创建的场景)
在这里插入图片描述

  1. 场景创建完成之后,
    选择Window,
    选择AI,
    点击Navigation
    在这里插入图片描述
    然后在编辑器右侧会出现一个Navigation窗口
    在这里插入图片描述
  2. 选中场景中的地板
    在这里插入图片描述
  3. 在Inspector监视器窗口中,点击Static旁边的下拉箭头
    点击Navigation Static,
    让场景地板变成导航静态
    在这里插入图片描述
  4. 还是在地板的选中状态下,
    点击Navigation窗口,选择Object,确认Navigation Area是Walkable可行区域(有的默认可能是Not Walkable)
    在这里插入图片描述
  5. 选择Back,点击下面的Back,烘焙地图
    在这里插入图片描述
  6. 此时会发现地板有一层蓝色,表示成功了,已经给地板挂上了导航系统,
    在这里插入图片描述

障碍物必不可少,下面在导航系统中创建一下障碍物

障碍物创建

我们把这个电视柜当作障碍物来创建,也可以直接创建一个立方体,

在这里插入图片描述

选中障碍物,
在Navigation窗口中,点击Object,
勾选Navigation Static,
Navigation Area属性选择Not Walkable不可行区域

在这里插入图片描述

然后再选中Bake选项,
点击下方Bake再次烘焙一下

在这里插入图片描述

然后障碍物的不可行区域就被切割出来了

在这里插入图片描述

人物的AI导航

  1. 选中人物,添加组件Add Components
    在这里插入图片描述
  2. 选择Navigation
    在这里插入图片描述
    3.选择Nav Mesh Agent
    在这里插入图片描述
    注意:
    (如果跳过插件安装步骤的话是之后三个选项,同样选择Nav Mesh Agent)
    在这里插入图片描述
  3. 在资源窗口空白处点击右键,
    选择Create,
    选择Folder,创建一个文件夹,用来存放脚本代码
    命名Script
    在这里插入图片描述
  4. 双击刚刚创建的文件夹,在空白处右键,
    选择Create,
    点击C# Script,创建一个人物导航脚本
    命名PlayerNav
    在这里插入图片描述
    在这里插入图片描述s
  5. 双击打开文件,输入以下代码,完成后记得Ctrl+S保存一下。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;public class PlayerNav : MonoBehaviour
{private NavMeshAgent agent;void Start(){agent = GetComponent<NavMeshAgent>();}void Update(){if (Input.GetMouseButtonDown(0)){RaycastHit hit;if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100)){agent.destination = hit.point;}}}
}
  1. 回到编辑器,将代码文件拖到Player身上,挂载脚本
    在这里插入图片描述
  2. 运行游戏,点击鼠标就可以看到效果了。
    在这里插入图片描述

动态障碍物

在前面障碍物制作步骤,针对静态的障碍物,例如墙体、树木等,像垃圾桶和座椅属于可移动的动态障碍物,用上面的做法也可以,缺点就是移动一下障碍物就需要Bake烘焙一下,麻烦,不如一劳永逸。

下面就是动态障碍物的制作方法:
(其实很简单,只需要添加一个组件即可)

  1. 随便创建一个立方体
    在这里插入图片描述
  2. 调整一下大小,摆放到合适位置
    在这里插入图片描述
  3. 点击右下角Add Component,选择Navigation
    在这里插入图片描述
  4. 选择Nav Mesh Obstacle
    在这里插入图片描述
  5. 完成了,真就添加一个组件即可
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/148322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第7天:信息打点-资产泄漏amp;CMS识别amp;Git监控amp;SVNamp;DS_Storeamp;备份

第7天&#xff1a;信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份 知识点&#xff1a; 一、cms指纹识别获取方式 网上开源的程序&#xff0c;得到名字就可以搜索直接获取到源码。 cms在线识别&#xff1a; CMS识别&#xff1a;https://www.yun…

quickapp_快应用_tabBar

tabBar 配置项中配置tabBar(版本兼容)使用tabs组件配置tabBar语法示例问题-切换tab没有反应问题-数据渲染问题解决优化 问题-tab的动态配置 第三方组件tabbar 一般首页都会显示几个tab用于进行页面切换&#xff0c;以下是几种tab配置方式。 配置项中配置tabBar(版本兼容) 在m…

transform学习资料

一、NLP&#xff1a;自然语言处理 NLP 是机器学习在语言学领域的研究&#xff0c;专注于理解与人类语言相关的一切。NLP 的目标不仅是要理解每个单独的单词&#xff0c;而且能理解这些单词与之相关联的上下文之间的意思。 常见的NLP 任务列表&#xff1a; 对整句的分类&…

系列五、怎么查看默认的垃圾收集器是哪个?

一、怎么查看默认的垃圾收集器是哪个 java -XX:PrintCommandLineFlags -version

面试真题汇总430家

公司链接备注吉利https://www.nowcoder.com/share/jump/1691805464847提前批百度https://www.nowcoder.com/share/jump/1691805492592提前批&#xff0c;二面快手https://www.nowcoder.com/feed/main/detail/1f9bfcffa3a540549194bbde1059600d一面鼎捷软件https://www.nowcoder…

父子通信,动态组件,异步加载组件

2.组件基础 2-1父传子props 父传子:水往低处流(单向绑定的原则),子不能修改父传过来的属性,它是只读的,但是可以使用监听和计算属性进行修改 父组件 <template><div><navbar mytitle"电影" isShow"false"></navbar><navbar…

wpf devexpress 创建布局

模板解决方案 例子是一个演示连接数据库连接程序。打开RegistrationForm.BaseProject项目和如下步骤 RegistrationForm.Lesson1 项目包含结果 审查Form设计 使用LayoutControl套件创建混合控件和布局 LayoutControl套件包含三个主控件&#xff1a; LayoutControl - 根布局…

C复习-输入输出函数+流

参考&#xff1a; 里科《C和指针》 perror 定义在stdio.h中。当一个库函数失败时&#xff0c;库函数会在一个外部整型变量errno&#xff08;在errno.h中定义&#xff09;中保存错误代码&#xff0c;然后传递给用户程序&#xff0c;此时使用perror&#xff0c;会在打印msg后再打…

.gitignore 文件——如何在 Git 中忽略文件和文件夹详细教程

文章目录 什么是 .gitignore 文件&#xff1f;.gitignore 文件是用来做什么的&#xff1f;如何创建一个 .gitignore 文件&#xff1f;在 .gitignore 文件中应包括什么&#xff1f;如何在 Git 中忽略一个文件和文件夹如何忽略以前提交的文件 什么是 .gitignore 文件&#xff1f;…

Django框架之模型层(一)

【一】前言 Django自带的sqlite3数据对日期格式不敏感&#xff0c;处理的时候容易出错 【二】单表操作 【1】数据的增加 from django.test import TestCase# Create your tests here. import osif __name__ "__main__":os.environ.setdefault("DJANGO_SETTIN…

【Go入门】 Go搭建一个Web服务器

【Go入门】 Go搭建一个Web服务器 前面小节已经介绍了Web是基于http协议的一个服务&#xff0c;Go语言里面提供了一个完善的net/http包&#xff0c;通过http包可以很方便的搭建起来一个可以运行的Web服务。同时使用这个包能很简单地对Web的路由&#xff0c;静态文件&#xff0c…

【Go入门】并发

【Go入门】并发 有人把Go比作21世纪的C语言&#xff0c;第一是因为Go语言设计简单&#xff0c;第二&#xff0c;21世纪最重要的就是并行程序设计&#xff0c;而Go从语言层面就支持了并行。 goroutine goroutine是Go并行设计的核心。goroutine说到底其实就是协程&#xff0c;…

华为OD机试 - 转盘寿司(Java JS Python C)

目录 题目描述 输入描述 输出描述 用例 题目解析 JS算法源码 Java算法源码

【力扣】从零开始的动态规划

【力扣】从零开始的动态规划 文章目录 【力扣】从零开始的动态规划开头139. 单词拆分解题思路 45. 跳跃游戏 II解题思路 5. 最长回文子串解题思路 1143. 最长公共子序列解题思路 931. 下降路径最小和解题思路 开头 本力扣题解用5题来引出动态规划的解题步骤&#xff0c;用于本…

Android图片涂鸦,Kotlin(1)

Android图片涂鸦&#xff0c;Kotlin&#xff08;1&#xff09; import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Path import android.graphics.PointF import android.…

UE4动作游戏实例RPG Action解析三:实现效果,三连击Combo,射线检测,显示血条,火球术

一、三连Combo 实现武器三连击,要求: 1.下一段Combo可以随机选择, 2.在一定的时机才能再次检测输入 3. 等当前片段播放完才播放下一片段 1.1、蒙太奇设置 通过右键-新建蒙太奇片段,在蒙太奇里创建三个片段,并且移除相关连接,这样默认只会播放第一个片段 不同片段播…

图像分类(六) 全面解读复现MobileNetV1-V3

MobileNetV1 前言 MobileNetV1网络是谷歌团队在2017年提出的&#xff0c;专注于移动端和嵌入设备的轻量级CNN网络&#xff0c;相比于传统的神经网络&#xff0c;在准确率小幅度降低的前提下大大减少模型的参数与运算量。相比于VGG16准确率减少0.9%&#xff0c;但模型的参数只…

基于Vue+SpringBoot的大病保险管理系统 开源项目

项目编号&#xff1a; S 031 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S031&#xff0c;文末获取源码。} 项目编号&#xff1a;S031&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统配置维护2.2 系统参保管理2.3 大…

SDUT OJ《算法分析与设计》搜索算法

A - 子集和问题 Description 子集和问题的一个实例为〈S,t〉。其中&#xff0c;S{ x1 &#xff0c; x2 &#xff0c;…&#xff0c;xn }是一个正整数的集合&#xff0c;c是一个正整数。子集和问题判定是否存在S的一个子集S1&#xff0c;使得&#xff1a; 。 试设计一个解子…

坐标系下的运动旋量转换

坐标系下的运动旋量转换 文章目录 坐标系下的运动旋量转换前言一、运动旋量物体运动旋量空间运动旋量 二、伴随变换矩阵三、坐标系下运动旋量的转换四、力旋量五、总结参考资料 前言 对于刚体而言&#xff0c;其角速度可以写为 ω ^ θ ˙ \hat {\omega} \dot \theta ω^θ˙&…