Unity学习日志_寻路系统简介

Unity学习日志_寻路系统简介

基础寻路系统(Unity自带的)需要先将地形设置为静态后才可以进行网格烘焙。

Navigation视图:

1. Object:

在这里插入图片描述

  1. Scene Filter:选择要进行烘焙的物体类型。All(可以烘焙所有物体),Mesh Renderers(只可以烘焙带有Renderer的物体),Terrains(只可以烘焙地形)。
  2. Navagation Static:上面为当前选中物体的名字,此项为设置此物体为导航静态(可烘焙)
  3. Generate OffMeshLinks:当勾选此属性后,此物体可以在Bake中使用对应的属性:Drop Height,Jump Distance。
  4. Navigation Area:当前物体烘焙后所在的Area。

2. Bake:

在这里插入图片描述

  1. Baked Agent Size下面:这里是一个展示模板,可以看到下面的属性调整结果。
  2. Agent Radius:烘焙代理的半径预设值,在unity寻路系统中,物体寻路依靠代理组件实现。该预设值直接决定了多宽的代理组件可以通过。
  3. Agent Height:烘焙代理高度预设值。该预设值直接决定了多高的代理组件可以通过。
    1. 注:这里设置的代理信息为一个场景的烘焙值,就好比造桥时需要预先规定一个桥宽和承重。代理组件的信息设置在Agents面板中。
  4. Max Slope:代理可迈上的最大坡度。
  5. Step Height:代理可迈上台阶的最高高度。
  6. Drop Height:下落高度。
  7. Jump Distance:跳跃距离。
    1. 注:此两项需要勾选Generate OffMeshLinks才会生效。
  8. Advanced:
    1. Manual Voxel Size:勾选后将可以手动输入体素值大小。
    2. Voxel Size:输入体素值,注:将体素值减半将使内存使用量扩大4倍,烘焙时间延长4倍。
    3. Min Region Area:网格面积小于此数值的地方将不生成网格。
    4. Height Mesh:勾选此项将保存网格的高度信息,当然,需要额外的性能和存储空间。

3. Areas:

此界面可以自定义烘焙Area。Cost为此烘焙物体的花费权重。

在这里插入图片描述

AreaMask值的设置:AreaMask值采用按位计算,第一层二进制为1,第二层二进制为10,第三层二进制为100。其中0代表Nothing,-1代表Everything。

4. Agents:

此面板属性实际确定代理类型。

在这里插入图片描述

Nav Mesh Agent:

实际绑定在寻路物体上的代理组件。
在这里插入图片描述

属性:

  1. Agent Type:代理类型,来源于Navigation中的Agents面板。
  2. Base Offset:基础偏移,指的是代理边界与游戏物体本身的偏移量。
  3. Speed:寻路速度。
  4. Angular Speed:角速度。
  5. Acceleration:加速度。
  6. Stopping Distance:寻路到达目的地后与目的地坐标的距离。
  7. Auto Braking:自动制动。
  8. Obstacle Avoidance:障碍回避。可以处理当多个代理走同一条路的策略。
  9. Radius:代理半径。
  10. Height:代理高度。
  11. Quality:代理躲避质量。
  12. Priority:代理优先级,优先级低的代理会给优先级高的物体”让路“。
  13. Auto Traverse Off Mesh Link:是否自动通过off mesh Link。
  14. Auto Repath:当原有路线失效后是否重新计算路线。
  15. Area Mask:当前代理可以寻路的层。
    1. AreaMask值的设置:AreaMask值采用按位计算,第一层二进制为1,第二层二进制为10,第三层二进制为100。其中0代表Nothing,-1代表Everything。

Off Mesh link:

由于基础组件中烘焙的offweshlink只可以下降,不能上升(想要上升就需要提升代理的Step height),所以有了这个组件

在这里插入图片描述

属性:

  1. Start:起始点。
  2. End:终点。
  3. Cost Override:花费重写值,如果为正则此条路的花费变为该值,如果为负,则使用默认的花费。
  4. Bi Directional:是否双向。
  5. Activated:是否激活该条路线。
  6. Auto Update Position:是否自动更新位置,
  7. Navigation Area:此条路所在area层。

Nav Mesh Obstacle:

unity基础寻路系统中可以实现动态烘焙的组件。

在这里插入图片描述

属性:

  1. Shape:障碍物几何形状,分为方块和胶囊体。
  2. Center:Shape的中心点坐标。
  3. Size:Shape的大小。
  4. Carve:是否在网格中打孔,打孔之后将视为障碍物,而不再是一个代理。
    1. Move Threshold:移动阈值,障碍物移动多少距离后会重新打孔。
    2. Time To Stationary:障碍物多久不动会被认为是静止的。
    3. Carve Only Stationary:是否只在静止时在导航网络打孔。

寻路系统的拓展新功能(需要单独下载):

unity官方更新的寻路组件烘焙时不需要将物体设置为静态。

Nav Mesh Surface:

在这里插入图片描述

实现的新特征:
1. 多代理网格烘焙:

为一个物体添加多个不同的surface组件,不同surface可以同时烘焙。

2. 可实现垂直网格烘焙:

基础寻路系统中无法烘焙一个延Y轴旋转90度的Plane,但新组件可以。

3. 脚本控制网格烘焙:

可以通过脚本对一片区域进行实时烘焙,但正常使用时实时烘焙往往采用Local Nav Mesh Builder + Nav Mesh Source Tag的形式。

关于使用脚本控制网格烘焙时如何获取AgentTypeID:
  1. 使用NavMesh中的GetSettingsByIndex(返回值为NavMeshBuildSetting类型)来获得Navigation视图Agents面板中的某个特定的Agent。
  2. NavMeshBuildSetting中的AgentTypeID可以直接使用。
private NavMeshSurface _navMeshSurface;

    private void Start()
    {
        //创建一个surface脚本
        _navMeshSurface = gameObject.AddComponent<NavMeshSurface>();
        //获取想要的AgentID
        NavMeshBuildSettings _settings = NavMesh.GetSettingsByIndex(1);
        //将AgentID赋值给surface中的agentTypeID
        _navMeshSurface.agentTypeID = _settings.agentTypeID;
    }
属性:
  1. Agent Type:代理类型。
  2. Collect Objects:烘焙范围:有All(所有),Volume(Volume体积区域内),Children(子对象)。
  3. Include Layers:烘焙所包含的层。
  4. Use Geometry:烘焙带有XXX的物体,有Render Meshes(烘焙带有Mesh Renderer的物体),Physics Collider(烘焙带有Collider的物体)。

Nav Mesh ModifierVolume:

在这里插入图片描述

与NavMeshModifier的不同在于此脚本不再只作用于一个物体,而是一片区域。

Nav Mesh Modifier:

在这里插入图片描述

属性:
  1. Ignore From Build:烘焙时无视此物体。
  2. Override Area:重写区域。如果勾选此选项,则在烘焙时Area层会采用下面的设置。
  3. Area Type:设置重写Area层。
  4. Affected Agents:适用的代理。

Nav Mesh Link:

用户不在需要自行添加起始点和终止点了。
在这里插入图片描述

属性:
  1. Agent Type:适用的Agent。
  2. Start Point:开始点坐标。
  3. End Point:终止点坐标。
  4. Swap:两极反转。
  5. Align Transform:Transform对齐,将该物体和startPoint,EndPoint对其在一条线上。
  6. Width:link宽度。
  7. Cost Modifier:修改花费值,负数代表使用Area默认的值。
  8. Auto Update Position:是否在开始游戏后动态更新位置。
  9. Bidirectional:是否双向。
  10. Area Type:Area类型。

区域动态烘焙:

Local Nav Mesh Builder:

在这里插入图片描述

属性:
  1. Tracked:区域要跟踪的Transform。
  2. Size:动态区域的大小。

Nav Mesh Source Tag:

在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值