【Unity】导航基本组件:Nav Mesh Agent、Off Mesh Link、Nav Mesh Obstacle

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


Nav Mesh Agent 导航网格代理

Nav Mesh Agent 通常放在角色身上,用于实现角色的导航移动。

关于 Nav Mesh Agent 的基本使用,可以参考上一篇文章:【Unity】Unity寻路系统讲解及Navigation实际应用

属性

nav mesh agent,Unity,Unity基础功能,Unity前端开发,unity,游戏引擎,Navigation,Nav Mesh,NavMeshObstacle

  • Agent Type:导航类型,默认为Humanoid人类。也可以选择 Open Agent Setting 进入代理设置页面,添加自己想要的代理类型。可以设置代理名称半径高度可跨越台阶高度可行走斜坡坡度等属性。
    nav mesh agent,Unity,Unity基础功能,Unity前端开发,unity,游戏引擎,Navigation,Nav Mesh,NavMeshObstacle

  • Base Offset: 设置导航Agent与人物高度的偏移。

Steering:移动相关属性:

  • Speed:移动速度,也可以理解为速度上限。
  • Angular:角速度,角色转向的速度,通常设置120即可。
  • Acceleration:加速度,使角色加速,直到达到速度上限为止,加速度变大角速度也会相应加快。
  • Stopping Distance:停止距离。角色到达目的地停止的距离。
  • Auto Braking:自动停止。使角色到达目的地后停止移动,避免原地跑步和抽搐。

Obstacle Avoidance:避障设置。

  • Radius:Agent的半径。
  • Height:Agent的高度。
  • Quality:躲避质量,质量越高,躲避越细致、越智能。
  • Priority:优先级,范围 0 ~ 99。0为最高优先级,99为最低,高优先级的Agent不会与低优先级的Agent进行碰撞。

Path Finding:寻路设置。

  • Auto Traverse Off Mesh Link:勾选后表示Agent可以自动的通过,场景中两个分开的物体间所创建的Off Mesh Link。
  • Auto Repath: 勾选后表示当Agent的当前路径无效时,可以自动计算寻找新的路径前进。
  • Area Mask: 可以指定Agent可通过哪些层,划分其可通过的区域。

Off Mesh Link 网格外链接

Off Mesh Link 用于在不连通的地形上做虚拟路面,使角色能够通过无地形区域,通常用于虚拟桥、浅滩、高低墙跳跃等。使用 Off Mesh Link 通常是指定两个空物体(或地图上的某两个点位),然后指定组件上的 Start 和 End 属性。
nav mesh agent,Unity,Unity基础功能,Unity前端开发,unity,游戏引擎,Navigation,Nav Mesh,NavMeshObstacle
nav mesh agent,Unity,Unity基础功能,Unity前端开发,unity,游戏引擎,Navigation,Nav Mesh,NavMeshObstacle

属性

nav mesh agent,Unity,Unity基础功能,Unity前端开发,unity,游戏引擎,Navigation,Nav Mesh,NavMeshObstacle

  • Start:外链起点。
  • End:外链终点。
  • Cost Override:如果值为正,则在计算处理路径请求的路径成本时使用该值。否则,使用默认成本(此游戏对象所属区域的成本)。如果 Cost Override 设置为值 3.0,则在网格外链接上移动的成本将是在默认导航网格区域上移动相同距离的成本的三倍。如果希望让代理通常优先选择步行,但当步行距离明显更长时使用网格外链接,则 Cost Override 设置将变得有用。
  • Bi-Directional:如果启用此属性,则可以在任一方向上遍历链接。否则,只能按照从 Start 到 End 的方向遍历链接。
  • Activated:指定寻路器 (pathfinder) 是否将使用此链接(如果将此属性设置为 false,则将忽略它)。
  • Auto Update Positions:如果启用此属性,当端点移动时,网格外链接将重新连接到导航网格。如果禁用,即使移动了端点,链接也将保持在其起始位置。
  • Navigation Area:描述链接的导航区域类型。该区域类型允许您对相似区域类型应用常见的遍历成本,并防止某些角色根据代理的区域遮罩 (Area Mask) 访问网格外链接。

链接是否成功

链接的两个端点要在烘焙路径范围内才能链接成功,否则该链接将失去效果。下图左为链接成功,又为链接失败。
nav mesh agent,Unity,Unity基础功能,Unity前端开发,unity,游戏引擎,Navigation,Nav Mesh,NavMeshObstacle

静态障碍物和动态障碍物

静态障碍物

如果物体为静态障碍物,通常将物体设置为 Navigation Static 静态物体,然后进行烘焙即可。这样会降低角色寻路卡死的几率。
nav mesh agent,Unity,Unity基础功能,Unity前端开发,unity,游戏引擎,Navigation,Nav Mesh,NavMeshObstacle
效果如下:
nav mesh agent,Unity,Unity基础功能,Unity前端开发,unity,游戏引擎,Navigation,Nav Mesh,NavMeshObstacle

动态障碍物

如果该障碍物是可移动的障碍物,可以使用 Nav Mesh Obstacle 组件,实现物体的动态碰撞。比如一些动态机关或可移动的墙壁等。动态障碍物通过 Carve 设置也可以实现动态烘焙挖孔,但性能损耗较大,通常情况下尽量不要使用该功能。

Nav Mesh Obstacle 导航网格障碍物

Nav Mesh Obstacle 是寻路网格的障碍物组件,用于实现动态碰撞。

属性

nav mesh agent,Unity,Unity基础功能,Unity前端开发,unity,游戏引擎,Navigation,Nav Mesh,NavMeshObstacle

  • Shape:碰撞图形(胶囊、方块)。
  • Center:中心点位。
  • Size:大小。

Carve:切割设置,该设置能使路面动态烘焙,动态将障碍物的区域从烘焙网格中切除。勾选 Carve 复选框后,导航网格障碍物会在导航网格中创建一个孔。

  • Move Threshold: 当导航网格障碍物的移动距离超过 Move Threshold 设置的值时,Unity 会将其视为移动状态。使用此属性可设置该阈值距离来更新移动的雕孔。
  • Time To Stationary:将障碍物视为静止状态所需等候的时间(以秒为单位)。
  • Carve Only Stationary:启用此属性后,只有在静止状态时才会雕刻障碍物。

障碍和雕刻

导航网格障碍物可通过两种方式影响导航网格代理在游戏中的导航:

障碍

未启用 Carve 时,导航网格障碍物的默认行为类似于碰撞体的行为。导航网格代理会尝试避免与导航网格障碍物的碰撞,当靠近时,它们会与导航网格障碍物碰撞。障碍躲避行为是非常基本的,具有一条短半径。因此,导航网格代理可能无法在导航网格障碍物很混乱的环境中找到方向。此模式最适合用于障碍物不断移动的情况(例如,车辆或玩家角色)。
nav mesh agent,Unity,Unity基础功能,Unity前端开发,unity,游戏引擎,Navigation,Nav Mesh,NavMeshObstacle

雕刻

启用 Carve 时,障碍物处于静止状态时将在导航网格中雕刻一个孔。移动时,障碍物即为障碍物。在导航网格中雕刻一个孔后,寻路器 (pathfinder) 能够让导航网格代理绕过雕有障碍物的位置周围,或者如果当前路径被障碍物阻挡,则寻找另一条路线。对于通常会阻碍导航但可被玩家或其他游戏事件(如爆炸)移动的导航网格障碍物(例如板条箱或木桶),最好为其开启雕刻功能。
nav mesh agent,Unity,Unity基础功能,Unity前端开发,unity,游戏引擎,Navigation,Nav Mesh,NavMeshObstacle

雕刻注意事项

  • 在Bake场景的时候,Navigation窗口的Bake页面有一个高度值,场景中的导航网格通常作为一个平面,当NavMeshObstacle 距离小于这个高度时,才会在导航网格上挖洞,否则NavMeshObstacle 还是以普通模式存在的。
  • NavMeshObstacle 在刚创建的时候最好先关闭NavMeshObstacle 这个组件,但需要是再打开,否则会有bug(先创建NavMeshObstacle,再Additive场景后,场景中一直存在一个不可通过区域)。创建完毕后,移动到适当位置再激活这个组件。
  • 碰撞还是使用trigger。
  • 最好不要同时使用RigidBody,有bug。
  • 在挖洞时,设备掉帧比较明显。善用Move Threshold。

更多内容请查看总目录【Unity】Unity学习笔记目录整理文章来源地址https://www.toymoban.com/news/detail-783216.html

到了这里,关于【Unity】导航基本组件:Nav Mesh Agent、Off Mesh Link、Nav Mesh Obstacle的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 了解Unity编辑器之组件篇Mesh(三)

    Mesh:是一种三维模型的表示形式,它由一系列顶点、三角形(或其他多边形)和相关属性组成。Mesh用于表示物体的外观和形状,它是可见物体的基本组成部分。通过操作Mesh,开发者可以实现各种视觉效果、物理模拟和动画,使游戏或应用程序的世界显得更加真实和互动。

    2024年02月16日
    浏览(40)
  • ROS2+nav2+激光雷达导航(上)

    前面一段时间在ros2和cartographer中摸爬滚打后,终于把图给建出来了,下一步应该就是根据建好的图利用nav2来进行导航了。 本篇博客主要讲解如果加载地图,并用 AMCL 算法实现定位,导航的部分放到下一部分当中。 环境 Ubuntu 22.04 ROS2 humble 激光雷达:镭神激光雷达M10P 网口版

    2024年02月03日
    浏览(71)
  • 【ROS】ROS2导航Nav2:简介、安装、测试效果、错误处理

    在ROS2中自动导航使用Nav2来实现。 Nav2 使用几个独立的模块化服务,通过 ROS 2接口(例如动作服务器或服务)与行为树 (BT) 通信。 Nav2 输入包括:TF转换、一个地图源、一个行为树 (BT) XML 文件和相关的传感器数据源; Nav2 输出速度命令; Nav2 支持多种机器人,比如:四足机器人、

    2024年02月10日
    浏览(115)
  • 【ROS2机器人入门到实战】Nav2导航框架介绍与安装

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 上一节我们对机器人导航过程中所用到的2D地图进行了介绍,本节

    2024年02月04日
    浏览(40)
  • Unity 之NavMeshAgent 组件(导航和路径寻找的组件)

    NavMeshAgent 是Unity引擎中用于导航和路径寻找的组件。它可以使游戏对象在场景中自动找到可行走的路径,并在避免障碍物的情况下移动到目标位置。 以下是关于 NavMeshAgent 组件的详细解释: NavMeshAgent 负责控制游戏对象的导航行为。它使用场景中的导航网格(NavMesh)来寻找到

    2024年02月03日
    浏览(31)
  • TP-LINK易展路由器Mesh互联

    保证环境中最好只有这两台路由器,主路由和子路由 将子路由器回复出厂设置:按下reset键10s,一直看到后面网口灯闪烁一下,就可以松开reset。(一定要等到闪烁再松开) 子路由器上除了电源线,啥网线都不要接。等待子路由器指示灯变为红灯常亮,再执行下一步。 在主路

    2024年02月09日
    浏览(38)
  • 【Unity3D】3D 视图操作 ( 视图基本元素 | 导航器 | 栅格 | 天空盒 | 3D 视图操作 | 视图旋转 | 视图缩放 | 视图平移 | 导航器操作 | 恢复方向 | 顶、右、前视图 )

    在 Scene 场景窗口 中 , 右上角的 是 \\\" 导航器 Gizmo \\\" , 导航器 相当于 指南针 , 表明了当前的 场景世界坐标的方向 ; 在 Scene 场景窗口 中的 格子 , 称为 \\\" 栅格 Grid \\\" , 表示的是当前 X 轴 和 Z 轴 所在的坐标平面 , 相当于大地地面 , 水平面 ; Y 轴是向上的 , 垂直与地面 , 指向天空 ;

    2024年02月05日
    浏览(44)
  • Unity创建人物基本动画(基础组件等相关知识和Idle的创建)

    步骤一:创建人物模型 首先,我们需要创建一个人物模型。可以使用Unity自带的模型,也可以使用第三方模型。在本文中,我们将使用Unity中自带的模型。 步骤二:创建动画控制器 在创建动画之前,我们需要先创建一个动画控制器(Animator Controller)。动画控制器是一个用于

    2024年02月15日
    浏览(51)
  • Unity网格篇Mesh(二)

    本文接上一遍Unity网格篇Mesh(二) 我们的网格目前处于一种特殊的情况下。因为我们到目前为止还没有给他们法线向量,默认的法线向量是(0,0,1)(垂直于屏幕向里),而我们需要的正好相反。 法线工作原理是什么呢? 法线是垂直于面的向量。我们通常使用单位长度的法向量

    2024年01月17日
    浏览(61)
  • Unity网格篇Mesh(一)

    创建网格坐标 使用携程计算他们位置 利用三角形确定一个面 自动生成法线 添加纹理坐标和切线 这篇教程中我们将利用顶点和三角面创建一个网格。 原英文篇 如果你想要在Unity显示一些东西,你需要一个网格。他可以是一个3D模型从另一个程序倒入的(3dmax,maya)。它也可

    2024年02月03日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包