Unity AI Navigation自动寻路

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


前言

Unity是一款强大的游戏开发引擎,而人工智能(AI)导航是游戏中至关重要的一部分。通过Unity的AI Navigation系统,开发者可以轻松地为游戏中的角色实现自动导航功能。本文将介绍Unity中AI Navigation的基础内容,帮助开发者快速入门。


一、Unity中AI Navigation是什么?

Unity中的AI Navigation是一套用于游戏开发的导航系统,它使开发者能够为游戏中的角色提供智能的路径规划和导航功能。通过AI Navigation系统,游戏中的角色可以根据场景中的障碍物、地形等信息,自动计算出最佳路径,并沿着路径移动到目标位置。

二、使用步骤

1.安装AI Navigation

ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎

ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎

2.创建模型和材质

创建地面和材质

ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎

创建一个空物体,把Plane放到里面,然后挂载NavMeshSurface组件获取当前地图数据

ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎

NavMeshSurface 是 Unity 中用于生成导航网格的组件。它表示特定 NavMesh Agent 类型的可行走区域,并定义了场景中应该构建 NavMesh 的部分。

以下是 NavMeshSurface 组件的一些属性介绍:

  1. Agent Type:指定使用该 NavMeshSurfaceNavMesh Agent 类型。这对于烘焙设置和在寻路期间将 NavMesh Agent 匹配到适当的表面非常有用。
  2. Default Area:定义在构建NavMesh时生成的区域类型。
  3. Generate Links:如果启用此选项,由 NavMeshSurface 收集的对象将在烘焙过程中被视为生成链接。有关更多信息,请参阅链接生成部分。
  4. Use Geometry:选择用于烘焙的几何体。
  5. Object Collection:定义用于烘焙的 GameObject 集合。
  6. Advanced Settings:高级设置部分允许您自定义以下附加参数。
  7. NavMeshData(只读):定位存储 NavMesh 的资产文件。

点击bake开始烘焙地形

ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎

给Player挂上Nav Mesh Agent组件

ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎

NavMeshAgent 是 Unity 中用于导航的组件,用于控制角色在场景中的移动。

以下是 NavMeshAgent 组件的一些属性介绍:

  1. AgentType:代理的类型 。

  2. BaseOffset:相对垂直位移偏差。

  3. Speed:遵循路径时的最大移动速度。

  4. AngularSpeed:遵循路径时的最大转向速度(以度/秒为单位)。

  5. Acceleration:代理在遵循路径时的最大加速度,以单位/秒2为单位。

  6. StoppingDistance:距离目标位置停止的距离。

  7. AutoBraking:代理是否自动刹车以避免超过目标点

  8. Radius:代理的避让半径。

  9. Height:代理的高度,用于通过障碍物等。

  10. Priority :用于设置避让优先级。

  11. AreaMask:指定哪些 NavMesh 区域可通行。

3.编写向目标移动的脚本

代码如下(示例):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class SetDestination : MonoBehaviour
{

    private NavMeshAgent _agent;
    private Transform _target;

    // Start is called before the first frame update
    void Start()
    {
        _agent = GetComponent<NavMeshAgent>();
        _target = GameObject.Find("Target").transform;
    }

    // Update is called once per frame
    void Update()
    {
        _agent.SetDestination(_target.position);
    }
}

然后把脚本挂载Player上

4.NavMeshLink桥接组件

创建2个不贴合的平面,然后烘焙导航网格

ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎

创建一个空物体并添加NavMeshLink组件

NavMeshLink 是 Unity 中用于导航的组件,用于创建可导航的链接,连接使用 NavMesh 的不同位置。这些链接可以是从点到点,也可以跨越空隙,此时代理会使用入口边缘上最近的位置来穿越链接。您必须使用 NavMeshLink 来连接不同的 NavMesh Surface

ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎

  1. Start Point:链接的起始点,相对于 GameObject。使用 XYZ 坐标定义。

  2. End Point:链接的结束点,相对于 GameObject。使用 XYZ 坐标定义。

选中图中的小方块,然后移动

ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎

ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎
ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎

5.NavMeshObstacle组件

NavMeshObstacle 是 Unity 中用于导航的组件,用于描述移动障碍物,这些障碍物在导航世界中需要被 NavMesh Agents 避开(例如由物理系统控制的桶或箱子)。

以下是 NavMeshObstacle 组件的一些属性介绍:

创建一个模型,添加一个NavMeshObstacle组件

ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎
ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎

  1. Shape:指定障碍物的几何形状。可选择以下形状之一:

    • Box:选择一个立方体形状的障碍物。

      • Center:相对于变换位置的立方体中心。
      • Size:立方体的尺寸。
    • Capsule:选择一个椭圆形状的障碍物。

      • Center:相对于变换位置的胶囊中心。
      • Radius:胶囊的半径。
      • Height:胶囊的高度。
  2. Carve:启用此选项后,障碍物在静止时会在 NavMesh 中刻出一个洞。当障碍物移动时,它成为一个阻碍物。

  3. Move Threshold:设置更新移动刻出洞的阈值距离。当障碍物移动超过此距离时,Unity 将其视为移动中。

  4. Time To Stationary:指定障碍物被视为静止的等待时间(以秒为单位)。

  5. Carve Only Stationary:启用此选项后,仅当障碍物静止时才会刻出洞。

6.NavMeshModifler组件

NavMeshModifier 是 Unity 中用于导航的组件,用于在运行时调整 GameObject 的行为,影响导航网格的生成。以下是 NavMeshModifier 组件的一些属性介绍:

  1. Mode:指定是否考虑或忽略受影响的 GameObject。

    • Add or Modify Object:在构建 NavMesh 时考虑受影响的 GameObject。
    • Remove Object:对于指定的代理类型,在构建 NavMesh 时忽略受影响的对象。
  2. Affected Agents :指定 NavMeshModifier 影响的代理类型。

    • All:修改所有代理的行为。
    • None:排除所有代理的修改行为。
  3. Apply to Children:将配置应用于 GameObject 的子级层次结构。如果需要在层次结构的较低级别覆盖此组件的影响,可以添加另一个 NavMeshModifier 组件。

  4. Override Area:更改受影响的 GameObject 的区域类型。如果要更改区域类型,请选中复选框,然后在区域类型下拉菜单中选择新的类型。如果不想更改区域类型,取消选中复选框。

  5. Override Generate Links:在生成链接时,强制包括或忽略受影响的 GameObject。

  6. Generate Links:指定在生成链接时是否包括受影响的 GameObject。如果要在 NavMesh 构建过程中包括 GameObject,请选中此复选框

创建一个路线并挂载NavMeshModifler组件

ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎

ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎

ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎

ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎

三、效果

ai巡逻 unity navigate,Unity3D,unity,人工智能,游戏引擎

总结

Unity的AI Navigation系统为游戏开发者提供了强大的路径规划和导航功能,使得开发者能够轻松实现游戏中角色的智能行动。通过本文的介绍,希望读者能够对Unity中AI Navigation的基础使用有所了解,并能够在自己的游戏项目中应用起来。文章来源地址https://www.toymoban.com/news/detail-852774.html

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

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

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

相关文章

  • unity关于navigation使用的问题——Window没有AI选项以及Navigation烘焙没有效果

    在Window中Package Manager的unity register下载AI Register包,然后你就发现window中有AI选项了 这个我看了其他人的解决方法都没用,然后我自己捣鼓出来了,希望可以给其他遇到这种情况的朋友一点帮助。  1.Gizmos一定要选上为蓝色,也就是右上角的那个类似地球的图标 2.Show only Selec

    2024年02月08日
    浏览(36)
  • AI Navigation导航系统_unity基础开发教程

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

    2024年02月21日
    浏览(45)
  • 【Unity】AI-Navigation导航系统生成导航网络

    在Unity资源包中添加 AI Navigation 插件,并 Install 。 找到 AN 标志,勾选 Show Only Selected(可有可无,只是为了更好地看出来网格在哪)。 在project面板里面创建 AI-NavMesh Surface 文件。 双击新建的文件,点击 Back 烘焙网格。 勾选 Show NavMesh 显示效果,识别为是否是障碍物的依据,就

    2024年04月27日
    浏览(39)
  • 比较以下Unity AStar Pathfinding, NavMesh, Recast Navigation 寻路算法的优点与缺点

    一、AStar Pathfinding AStar Pathfinding是一种基于图搜索的寻路算法,它使用启发式搜索来找到最短路径。AStar Pathfinding的优点包括: 高效性:AStar Pathfinding是一种高效的寻路算法,因为它使用启发式搜索来找到最短路径,可以大大减少搜索空间,从而提高寻路速度。 灵活性:ASta

    2024年02月19日
    浏览(47)
  • unity有限状态机和模糊状态机(怪物AI、自动寻路)

    自动寻路步骤: 1、把场景中不同的物体勾选static 2、烘培寻路网格 3、添加NavMeshAgent组件 4、给需要寻路的物体添加脚本 游戏中有限状态机的体现:小怪的巡逻和追逐功能 模糊状态机的体现:当玩家离小怪比较近时,小怪会追逐玩家,当玩家离小怪比较远时小怪会停止追逐玩

    2024年02月04日
    浏览(54)
  • 10.Unity2D 横版 简单AI 之 敌人随机移动+自动巡逻+障碍物跳跃+悬崖处转身+射线检测

    总目录 9.Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人发起攻击(索敌)+对象池优化+主角受伤死亡_ζั͡ ั͡雾 ั͡狼 ั͡✾的博客-CSDN博客 Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人攻击+敌人二连击。在敌人预制体下,创建空物体EnemyCanAttack,改成不

    2023年04月20日
    浏览(51)
  • Unity navigation烘焙不显示

    1.场景设置为navigation static。 2.有mesh render。 点击bake后无反应,不显示蓝色可行走区域(nav mesh)。 将layout设置为默认布局。 [Window]→[Layouts]→[Reset All Layouts]

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

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

    2024年02月03日
    浏览(47)
  • Unity 找不到 Navigation 组件的解决

    当我们想利用unity 里面的Navigation 组件来实现我们的物体的自动导航时,有时竟然会发现我们的菜单栏里面找不到 该组件  这时我们应该怎么办?         请确保你的项目中已经导入了Unity 的 AI 模块。要导入该模块,请打开 \\\"Project Settings\\\" (项目设置)【打开General Setti

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

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

    2024年02月04日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包