公司网站开发多少钱,电商网站入口,做破解的网站,哪个编程在线教育好目录 前言一、Unity中AI Navigation是什么#xff1f;二、使用步骤1.安装AI Navigation2.创建模型和材质3.编写向目标移动的脚本4.NavMeshLink桥接组件5.NavMeshObstacle组件6.NavMeshModifler组件 三、效果总结 前言
Unity是一款强大的游戏开发引擎#xff0c;而人工智能二、使用步骤1.安装AI Navigation2.创建模型和材质3.编写向目标移动的脚本4.NavMeshLink桥接组件5.NavMeshObstacle组件6.NavMeshModifler组件 三、效果总结 前言
Unity是一款强大的游戏开发引擎而人工智能AI导航是游戏中至关重要的一部分。通过Unity的AI Navigation系统开发者可以轻松地为游戏中的角色实现自动导航功能。本文将介绍Unity中AI Navigation的基础内容帮助开发者快速入门。 一、Unity中AI Navigation是什么
Unity中的AI Navigation是一套用于游戏开发的导航系统它使开发者能够为游戏中的角色提供智能的路径规划和导航功能。通过AI Navigation系统游戏中的角色可以根据场景中的障碍物、地形等信息自动计算出最佳路径并沿着路径移动到目标位置。
二、使用步骤
1.安装AI Navigation 2.创建模型和材质
创建地面和材质 创建一个空物体把Plane放到里面然后挂载NavMeshSurface组件获取当前地图数据 NavMeshSurface 是 Unity 中用于生成导航网格的组件。它表示特定 NavMesh Agent 类型的可行走区域并定义了场景中应该构建 NavMesh 的部分。
以下是 NavMeshSurface 组件的一些属性介绍
Agent Type指定使用该 NavMeshSurface 的 NavMesh Agent 类型。这对于烘焙设置和在寻路期间将 NavMesh Agent 匹配到适当的表面非常有用。Default Area定义在构建NavMesh时生成的区域类型。Generate Links如果启用此选项由 NavMeshSurface 收集的对象将在烘焙过程中被视为生成链接。有关更多信息请参阅链接生成部分。Use Geometry选择用于烘焙的几何体。Object Collection定义用于烘焙的 GameObject 集合。Advanced Settings高级设置部分允许您自定义以下附加参数。NavMeshData只读定位存储 NavMesh 的资产文件。
点击bake开始烘焙地形
给Player挂上Nav Mesh Agent组件 NavMeshAgent 是 Unity 中用于导航的组件用于控制角色在场景中的移动。
以下是 NavMeshAgent 组件的一些属性介绍 AgentType代理的类型 。 BaseOffset相对垂直位移偏差。 Speed遵循路径时的最大移动速度。 AngularSpeed遵循路径时的最大转向速度以度/秒为单位。 Acceleration代理在遵循路径时的最大加速度以单位/秒2为单位。 StoppingDistance距离目标位置停止的距离。 AutoBraking代理是否自动刹车以避免超过目标点 Radius代理的避让半径。 Height代理的高度用于通过障碍物等。 Priority 用于设置避让优先级。 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 updatevoid Start(){_agent GetComponentNavMeshAgent();_target GameObject.Find(Target).transform;}// Update is called once per framevoid Update(){_agent.SetDestination(_target.position);}
}
然后把脚本挂载Player上
4.NavMeshLink桥接组件
创建2个不贴合的平面然后烘焙导航网格 创建一个空物体并添加NavMeshLink组件
NavMeshLink 是 Unity 中用于导航的组件用于创建可导航的链接连接使用 NavMesh 的不同位置。这些链接可以是从点到点也可以跨越空隙此时代理会使用入口边缘上最近的位置来穿越链接。您必须使用 NavMeshLink 来连接不同的 NavMesh Surface。 Start Point链接的起始点相对于 GameObject。使用 XYZ 坐标定义。 End Point链接的结束点相对于 GameObject。使用 XYZ 坐标定义。
选中图中的小方块然后移动 5.NavMeshObstacle组件
NavMeshObstacle 是 Unity 中用于导航的组件用于描述移动障碍物这些障碍物在导航世界中需要被 NavMesh Agents 避开例如由物理系统控制的桶或箱子。
以下是 NavMeshObstacle 组件的一些属性介绍
创建一个模型添加一个NavMeshObstacle组件 Shape指定障碍物的几何形状。可选择以下形状之一 Box选择一个立方体形状的障碍物。 Center相对于变换位置的立方体中心。Size立方体的尺寸。 Capsule选择一个椭圆形状的障碍物。 Center相对于变换位置的胶囊中心。Radius胶囊的半径。Height胶囊的高度。 Carve启用此选项后障碍物在静止时会在 NavMesh 中刻出一个洞。当障碍物移动时它成为一个阻碍物。 Move Threshold设置更新移动刻出洞的阈值距离。当障碍物移动超过此距离时Unity 将其视为移动中。 Time To Stationary指定障碍物被视为静止的等待时间以秒为单位。 Carve Only Stationary启用此选项后仅当障碍物静止时才会刻出洞。
6.NavMeshModifler组件
NavMeshModifier 是 Unity 中用于导航的组件用于在运行时调整 GameObject 的行为影响导航网格的生成。以下是 NavMeshModifier 组件的一些属性介绍 Mode指定是否考虑或忽略受影响的 GameObject。 Add or Modify Object在构建 NavMesh 时考虑受影响的 GameObject。Remove Object对于指定的代理类型在构建 NavMesh 时忽略受影响的对象。 Affected Agents 指定 NavMeshModifier 影响的代理类型。 All修改所有代理的行为。None排除所有代理的修改行为。 Apply to Children将配置应用于 GameObject 的子级层次结构。如果需要在层次结构的较低级别覆盖此组件的影响可以添加另一个 NavMeshModifier 组件。 Override Area更改受影响的 GameObject 的区域类型。如果要更改区域类型请选中复选框然后在区域类型下拉菜单中选择新的类型。如果不想更改区域类型取消选中复选框。 Override Generate Links在生成链接时强制包括或忽略受影响的 GameObject。 Generate Links指定在生成链接时是否包括受影响的 GameObject。如果要在 NavMesh 构建过程中包括 GameObject请选中此复选框
创建一个路线并挂载NavMeshModifler组件 三、效果 总结
Unity的AI Navigation系统为游戏开发者提供了强大的路径规划和导航功能使得开发者能够轻松实现游戏中角色的智能行动。通过本文的介绍希望读者能够对Unity中AI Navigation的基础使用有所了解并能够在自己的游戏项目中应用起来。