动态导航表面(NavMeshModifileSurface)
Version >= LayaAir 3.2
一、概述
NavMeshModifileSurface(动态导航表面)是LayaAir 3D导航系统中用于动态修改导航网格的组件。与静态导航表面(NavMeshSurface)不同,动态导航表面的导航网格会跟随其所在节点的移动而更新,使得游戏场景能够更加动态和交互。
该组件继承自NavModifleBase,是动态节点基类的子类。在LayaAir-IDE的属性面板中,该组件显示为动态导航表面。
关于3D寻路的整体介绍,请参考3D寻路。
二、属性说明
| 属性 | 说明 |
|---|---|
代理类型 agentType |
指定该动态导航表面适用的代理类型,需与所属静态导航表面的代理类型匹配 |
区域标记 areaFlag |
标记该动态导航表面的区域类型,影响代理对该区域的寻路代价 |
数据 datas |
烘焙生成的导航网格数据(TextResource类型)。烘焙后自动填充 |
三、使用说明
3.1 基本用法
当需要在游戏运行时移动导航网格的某些区域时,可以为该区域的节点添加动态导航表面组件。典型场景如移动的地板、可升降的平台等。
使用步骤:
- 在场景中的目标节点上添加
动态导航表面组件。 - 该节点需要放在拥有
静态导航表面(NavMeshSurface)组件的节点的子节点下。 - 在项目运行前,与父级静态导航表面一起进行烘焙。
- 烘焙完成后,该节点的导航网格会跟随节点的移动而动态更新。
3.2 代码动态添加
如需通过代码在运行时动态添加导航网格,需要先提前烘焙好,并存储在预制体中。运行时通过加载预制体的方式进行动态添加。
3.3 注意事项
- 动态导航表面的节点需要放在静态导航表面节点的子节点下。
- 节点本身的位置、旋转、缩放不会影响数据变化,但子节点的位置、旋转、缩放会影响数据变化。
- 如果删减或添加了渲染节点,需要重新烘焙数据。
- 动态导航表面的数据可以动态添加到NavMeshSurface类的节点下面,形成场景路径的动态变化。