分享好友 最新动态首页 最新动态分类 切换频道
【Unity自动寻路】使用Navigation系统实现物体自动寻路绕开障碍物-AI导航
2024-12-28 16:54

知识点流程图

我们在游戏场景中经常会有一些障碍物、墙壁、树木等等,如果我想要让角色或者怪物去墙的另一边,我直接在墙另一边点击左键,我希望角色自动跑过去,但是他不能直接穿透墙,他需要“智能”的绕开障碍物,自动找到可以走的路,自己过去!这就是Unity 的 Navigation导航系统帮助我们做的事情!请看大屏幕

这里面有两个重要的对象

1.场景需要烘焙成导航地图

2.设置受导航地图影响的代理物体

如下图:player 在导航系统叫代理Agent 你只需要把作为代理的对象加一个组件Nav mesh agent! 就会受烘焙好的AI地图影响!否则不影响! 

3.代理的运动不能用Translate)函数,只能用  MyNav.SetDestination(移动的目标点);设置运动的目标点

Unity中的Navigation就像是一个智能的GPS系统,它可以告诉游戏角色如何最好地到达目的地。它会考虑所有的障碍物,并找出一条最佳路径。这就像你在现实生活中使用地图或导航应用从一个地方到另一个地方一样。

如果没有Navigation,游戏角色可能会直接走向障碍物,或者走出游戏的边界,这会让游戏看起来不真实,也会影响游戏的可玩性。而有了Navigation,游戏角色就可以像真实的人一样,知道如何避开障碍,如何选择最佳的路径。

所以,Navigation在Unity中的作用就是帮助游戏角色更真实、更自然地移动。它让游戏角色能够理解他们的环境,并做出合理的决策。这对于创建一个有趣、引人入胜的游戏至关重要

在Unity中,我们可以使用AI和Navigation导航来实现自动寻路。下面是一份详细的框架和步骤,帮助你理解如何在Unity中设置场景和使用Navigation导航。

按照下面步骤设置

1.1静态障碍物
  1. 选中你想要设置为静态障碍物的游戏物体。
  2. 打开Navigation窗口。
  3. 在Object选项卡中,勾选Navigation static。

4.然后点击Bake 烘焙

这样,你就成功地设置了一个静态障碍物,除去障碍物的地方都是可以行走的道路

1.2 动态障碍物

在Unity中,动态障碍物是一种特殊的障碍物,它可以在游戏运行时动态地改变位置或形状。这对于创建一个动态且富有挑战性的游戏环境非常有用。

要创建一个动态障碍物,你需要做的就是给游戏物体添加一个名为的组件。这个组件会让Navigation系统知道这个物体是一个障碍物,角色需要绕过它。

当你移动带有组件的游戏物体时,Navigation系统会自动更新导航网格,以反映障碍物的新位置。这意味着,你的游戏角色会自动知道如何绕过这个新的障碍物。

  1. 选中任意游戏物体。
  2. 添加组件Nav Mesh Obstacle

这样,你就成功地设置了一个动态障碍物。NavMesh Obstacle是一个组件,可以附加到你想要阻挡角色移动的物体上,它会动态地更新NavMesh,让代理(就是我们要在这个导航地图中自动训练的对象)绕开它。

1.3 如果没有链接的路,可以搭建一个桥
  1. 创建两个物体作为“桥墩”。
  2. 给任意一个物体添加组件Off Mesh Link(网格外链接)。

Off Mesh Link是一个组件,可以附加到你想要让角色进行特殊动作的物体上,例如跳跃,爬梯,开门等,它会在NavMesh之间创建一个链接,让代理可以跨越它。

把另一个桥墩B拖到A的组件中,B不需要添加任何组件

这样,你就成功地搭建了一个桥,让角色可以跨越。

当然,我们也可让两个分开的区域地图自动创建链接,不需要手动搭桥

首先选中第一块区域,在Object中勾选Generate OffMeshLinks

然后选中第二个区域设置这个按钮,也可以两个同时选中一起勾选

完毕后点击Bake,就会自动生成桥梁

但是两个区域的间距和Jump Distance是关联的!如果跳跃距离比较小,小于两个板块的距离,就不会生成链接路线!所以跳跃参数必须大于两个板块的间距

  1. 创建游戏主角。
  2. 添加组件Nav Mesh Agent(导航代理)。

NavMesh Agent是一个组件,可以附加到你想要移动的角色上,它会自动寻找最佳的路径,避开障碍物和其他代理,实现平滑的移动效果。

完整代码

核心代码:  MyNav.SetDestination(oneOutHitObj.point);//意思是获取射线与射中的物体的交叉点世界坐标,返回三维向量

 

注意:   MyNav.SetDestination(oneOutHitObj.point);

以上就是在Unity中使用AI和Navigation导航实现自动寻路的详细步骤。希望这篇文章能帮助你理解和掌握这个技术。如果你有任何问题或者需要进一步的解释,欢迎随时向我提问。祝你学习愉快

下文所说的代理,就是AI地图中寻路的那个主角! 

下面是Unity Navigation面板中BAKE参数的详细解释和例子:注意:这些参数的数值,Unity是比较参考生活中人类的行为的!所以这些数值可以模拟人类生活中的参数作为参考

1.Agent Radius

假设你在制作一个第一人称射击游戏,你的角色是一个士兵。你设置Agent Radius为0.5米,这意味着在导航过程中,士兵会自动保持至少0.5米的距离远离墙壁或其他障碍物,以避免过于接近或碰撞,AI主角与障碍物之间保持的距离

2.Agent Height

直接翻译为AI主角(代理)的身高!在同样的射击游戏中,你设置Agent Height为2米。这意味着如果有一个高度低于2米的隧道或者洞口,士兵将无法通过,因为他的身高(代理高度)超过了这个限制。设置人物能够通过洞口、门口的最低高度!假如设置为0.8米,那就意味着场景中构成洞口的场景,上下间距最低不能低于0.8,大于0.8,才会被烘焙成通路

3.Max Slope

你设置Max Slope为45度。这意味着如果你的游戏环境中有一个坡度超过45度的山坡,士兵将无法爬上去,因为这个坡度超过了他能处理的最大坡度。在烘焙之前如果模型与地面构成的夹角大于设置的最大角度,那么这个斜坡不能被烘焙为可行走的通路!角度低于设置的角度,就会被烘焙为通路,AI角色如果收到斜坡上的目的地坐标,则会沿着斜坡走

4.Step Height

你设置Step Height为0.4米。这意味着在游戏中,如果有一个高度超过0.4米的台阶,士兵将无法直接走上或者跨过,因为他不能跨越这么高的台阶。这里面谈到的跨越很有意思,如果一个很高的障碍物挡住AI主角的去路,它可以依据自己的最大跳高能力跳过去

简单说,就是角色能跳跃的最大高度!就跟体育调高比赛中能跳的最大高度!这个高度还要求小于Agent Height(代理身高,系统认为你不可能跳出比自己身高还高的高度

6.Jump Distance

你设置Jump Distance为3米。这意味着在游戏中,士兵可以跳过宽度不超过3米的沟壑或者障碍物,但如果遇到更宽的沟壑,他将无法跳过去。

  1. 分配区域和设置成本(cost)

在Navigation窗口的"Area"部分,你可以看到预定义的区域和自定义区域。

首先自己定义一些分配区域:例如创建草地、沙漠、森林和沼泽分别分配给_walkable区域(例如,区域0;可以将火山区分配给_notWalkable区域(例如,区域4;创建一个自定义区域,例如"Bridge",并分配一个唯一的区域编号,比如20。

然后设置成本:在Navigation窗口的"Agent Parameters"部分,找到"Area Costs"设置。将_walkable区域的成本设为1(默认值,然后分别设置沙漠、森林、沼泽和桥梁的成本。例如,沙漠的成本设为2,森林的成本设为1.5,沼泽的成本设为3,桥梁的成本设为10。

这些成本可以让AI角色自动选择成本最低的路线区域

第三步,对场景的模型分配这些区域

选中模型,比如是丛林区域

然后点击Bake进行烘焙

这个一块模型就变成了丛林区域 

以此类推,把其他模块都设置完毕

最后一起点击烘焙即可

最新文章
智能仓储技术有哪些应用
智能仓储技术现在已经广泛应用于各个行业,许多公司也已经某开深入了解并某开采用这种技术,它可以提高效率,减少成本,简化工作流程,满足客户需求等。它的应用范围非常广泛,涵盖了从零售到制造等各个领域。智能仓储技术最大的优点之一就
舆情SEO技术难不难
在如今信息爆炸的时代,舆情管理已成为企业和品牌必须面对的关键问题。而舆情SEO技术,则是在处理舆情危机时一种重要的工具。舆情SEO技术结合了SEO优化与舆情监测,通过对搜索引擎排名的操控,帮助企业或个人管理网络舆论,消除负面影响,
网络推广合作资源平台
摘要:,,网络推广合作资源平台是一个集结各类网络推广资源、合作机会和交流平台的综合性平台。该平台汇聚了众多行业内的专业人士和机构,提供丰富的推广资源、合作机会和交流机会,帮助企业快速拓展市场、提升品牌知名度和销售业绩。该平
小米 小米12SPro怎么开启ROOT权限
小米 小米12SPro手机root步骤1 要想给手机刷入root权限,首先打开www.7to.cn,下载安装奇兔刷机软件,将 红米K50Pro手机用数据线连接到电脑,手机退出小米账号,关闭锁屏密码,然后打开手机USB调试,会看到下图所示小米 小米12SPro手机root
国外网络推广
国外网络推广是企业在国际范围内利用互联网进行产品或服务宣传的一种重要手段。它包括利用社交媒体、搜索引擎优化(SEO)、内容营销、电子邮件营销、网络广告等多种方式,以扩大品牌知名度、吸引潜在客户并促成销售。通过精准定位目标市场
生化危机4
《生化危机4》是款以丧尸为题材的射击类手游,游戏根据端游移植而来,玩法丰富有趣,画质清新唯美,角色场景刻画的淋漓精致。游戏中玩家们可以在这里感受到全新的游戏玩法,带你在这体验到最真实丧尸世界。喜欢的赶快下载体验吧。《生化危
迅猛兔加速器官方版2024软件亮点
迅猛兔加速器官方版2024下载是一款高效的网络加速软件,专为提升用户上网体验而设计。它通过优化网络路径,减少数据传输延迟,有效解决网络卡顿、游戏延迟等问题。该软件界面简洁,操作便捷,支持多种设备和网络环境,无论是工作还是娱乐,
浅谈单行本、文库本,完全本
单行本:最普遍的版本。随着漫画在杂志上连载,书商就会陆续出漫画单行本。单行本页数一般在180页左右,32开,纸质一般。值得说明的是,漫画在杂志连载时,原本有些页为彩页,在单行本中通常一律印为黑白的。看下图,大家看单行本漫画时偶
公司坚持以“数据科学”为企业发展核心,自创立以来一直致力于为用户提供先进的数据软件产品和全面的数据解决方案,助力企业提升决策效率、优化运营成本、驱动业务创新。
在云计算技术发展的趋势下, 以人工智能为代表的新一代网络信息技术与金融服务深度融合产生的智能金融,是未来金融的发展方向。云计算、机器学习、自然语言处理以及智能算法等技术的兴起,也让金融行业可以顺乘东风,完成一次伟大飞跃。但
如何使用Excel表格的RANK函数进行跨表排名?
  我们在日常的工作生活或者学习当中,经常会使用到office的Excel表格工具对一些数据进行排名,相信很多人都已经学会使用Excel对单张工作表进行数据排名,但是在多张表中进行排名很多小伙伴还不会,今天小编就带着大家一起学习一下吧! 
相关文章
推荐文章
发表评论
0评