[UE4笔记] 导航网格的一些认识.

NavMeshBoundsVolume:主要作用是给予AI或者一些其他智能物体做寻路用的.按下P键后显示的绿色区域即为寻路体积.
NavModifierVolume:用来做寻路体积的修正,简单来说就相当于一个裁剪功能.
(在NavMeshBoundsVolume、NavModifierVolume的细节面板设置中都有调整X/Y/Z大小以及形状的选项.可以根据自己的需求来调整.)

RecastNavMesh:数量根据NavMeshBoundsVolume代理的对象数量决定.主要作用是细致化修改寻路体积的各项属性,也可以通过它来调整网格的生成方式.
(一般调整RecastNavMesh下的Generation)
在这里插入图片描述
Cell Size:设置区域精度(特别是楼梯的地方)
Agent Radius:这个是代理者的半径, 通常与所需代理的Actor的pawnMovement类型组件中的Nav Movement 类别中设置同名变量大小一致的.(一般来说设置为所代理对象胶囊体属性CapsuleRadius同样大小)
Agent Height:这个是代理者的高度, 通常与所需代理的Actor的pawnMovement类型组件中的Nav Movement 类别中设置同名变量大小一致的.(一般来说设置为所代理对象胶囊体属性Capsule Half Height的两倍)
Agent Max Slope: 生成RecastNavMash时,所允许的斜坡的最大角度。

在NavMeshBoundsVolume的Navigation选项中,选择需要支持的Supported
Agents。则在生成导航网格时,会根据指定的类型,生成不同的导航网格(RecastNavMash)。
在导航网格中,可以指定不同的运行时网格生成机制。

### 实现导航网格的动态更新 在 Unreal Engine 中,为了使角色能够实时响应环境变化并找到路径,动态更新导航数据变得至关重要。引擎提供了多种方式来处理这一需求。 #### 使用 NavMesh Volume 和 Navigation Modifier Volumes 通过设置 `NavMeshVolume` 可以定义地图上的可行走区域[^1]。当场景中的障碍物发生变化时,可以利用 `Navigation Modifier Volumes` 来调整特定区域内导航属性,从而间接影响导航网格的行为。这些体积允许开发者指定不同的成本权重或者其他参数,使得某些区域对于AI来说更难或者更容易穿越。 #### 调用 Recast 或者 Detour API 接口 Unreal Engine 内部集成了Recast和Detour库用于构建静态以及动态的导航网格。如果希望完全自定义控制导航网格局部重建过程,则可以直接调用这两个库所提供的API接口来进行操作。这通常涉及到编写C++代码,并深入理解底层工作原理[^2]。 ```cpp // C++ 示例:触发局部重新计算导航网格 void AMyActor::UpdateLocalNavMesh() { UNavigationSystemV1* NavSys = FNavigationSystem::GetCurrent<UNavigationSystemV1>(GetWorld()); if (NavSys && bIsObstaclePresent) { FVector Center = GetActorLocation(); float Radius = 500.f; // 强制立即更新给定范围内的导航数据 NavSys->UpdateNavDataInRadius(this, Center, Radius); } } ``` #### 利用蓝图节点简化开发流程 除了编程手段外,还可以借助于蓝图可视化脚本来快速搭建逻辑。例如,在检测到某个事件发生之后(比如门打开/关闭),可以通过激活相应的蓝图函数来刷新附近的导航信息而不必每次都手动编辑配置文件或重启游戏。 ```blueprint Event BeginPlay |-- Delay(2.0f) |-- Call Update Local Navigation Data Around Actor ```
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值