当前位置: 首页 > news >正文

同步路径查找:FindPathToLocationSynchronously

函数功能概述

UNavigationSystemV1::FindPathToLocationSynchronously是一个同步路径查找函数,用于在两个位置之间计算导航路径。它会在当前帧立即执行路径计算并返回结果。

参数详解

1.WorldContextObject(世界上下文对象)

  • 类型:UObject*
  • 作用: 提供当前世界的上下文信息,用于获取正确的World对象

2.PathStart(路径起点)

  • 类型:const FVector&
  • 作用: 路径计算的起始位置(世界坐标)

3.PathEnd(路径终点)

  • 类型:const FVector&
  • 作用: 路径计算的目标位置(世界坐标)

4.PathfindingContext(路径查找上下文)

  • 类型:AActor*
  • 作用: 提供路径查找的上下文信息,如:
    • 导航代理的大小和属性
    • 影响路径计算的Actor信息
    • 如果为nullptr,使用默认的导航代理设置

5.FilterClass(过滤器类)

  • 类型:TSubclassOf<UNavigationQueryFilter>
  • 作用: 自定义导航查询过滤器,用于:
    • 定义哪些区域可以通行
    • 设置不同区域的成本权重
    • 实现复杂的导航约束

返回值

  • 类型:UNavigationPath*
  • 作用: 返回计算出的导航路径对象,包含:
    • 路径点序列
    • 路径长度信息
    • 路径状态(有效/无效)

工作流程

  1. 验证输入: 检查起点和终点是否有效
  2. 投影到导航网格: 将3D坐标投影到最近的导航网格表面
  3. 路径计算: 使用A*算法或其他路径查找算法
  4. 路径优化: 对计算出的路径进行平滑和优化
  5. 返回结果: 返回包含路径点的UNavigationPath对象

使用场景示例

// 在角色类中使用voidAMyCharacter::MoveToLocation(constFVector&TargetLocation){// 同步计算路径UNavigationPath*Path=UNavigationSystemV1::FindPathToLocationSynchronously(this,// WorldContextObjectGetActorLocation(),// PathStartTargetLocation,// PathEndthis,// PathfindingContext (使用角色自身)nullptr// FilterClass (使用默认过滤器));if(Path&&Path->IsValid()){// 路径有效,开始移动FollowPath(Path->PathPoints);}}

重要特性

1.同步执行

  • 在当前帧立即完成计算
  • 阻塞当前线程直到计算完成
  • 适用于需要立即结果的场景

2.线程安全

  • 可以在游戏线程中安全调用
  • 内部处理了必要的同步机制

3.导航网格依赖

  • 依赖于预先构建的导航网格
  • 如果位置不在导航网格上,会自动投影到最近的可导航点

替代方案

如果需要异步路径查找,可以使用:

  • FindPathToLocationSynchronously的异步版本
  • AI移动组件的内置路径查找功能

这个函数是Unreal Engine AI和移动系统的基石,广泛应用于角色移动、AI寻路、自动导航等场景。

http://www.cnnetsun.cn/news/139812.html

相关文章:

  • vue导出excel文件
  • 基于STM32的自动售货机控制系统设计
  • 液压挖掘机回转能量回收系统设计与仿真
  • android 媒体之 MediaSession
  • 校园网络规划
  • 护眼灯已足够优秀,为何仍需眼调节训练灯?答案藏在近视防控里
  • Visual Studio中的多态
  • MindSpore硬核实战:彻底搞懂自动混合精度(AMP)与函数式训练
  • Java异常处理详解。零基础小白到精通,收藏这篇就够了
  • 基于深度学习YOLOv12的犬种识别检测系统(YOLOv12+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)
  • 基于深度学习YOLOv11的犬种识别检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)
  • [插电式混合动力车辆][交替方向乘子法(ADMM)结合CVX]插电式混合动力车辆的能源管理:基于凸优化算法用于模型预测控制MPC研究附Matlab代码
  • 【别花冤枉钱】学生党专享!2025年把AI率90%降到10%的“低成本”组合拳(含免费/付费工具避坑指南)
  • 前端Vue制作日历插件FullCalendar,零基础入门到精通,收藏这篇就够了
  • 基于MPC算法的P2构型混合动力汽车能量管理优化策略
  • 德克萨斯大学奥斯汀分校突破:球形利奇量化提升AI图像生成质量
  • 13、Unix 系统管理脚本实用指南(上)
  • 2026网络安全薪酬全景:哪些岗位是价值洼地,哪里又是薪资天花板?
  • Oracle领衔科技巨头5000亿美元AI数据中心租赁狂潮
  • Java算法——排序篇之快速排序,零基础小白到精通,收藏这篇就够了
  • 平安好医生:“人+机+生态”闭环 打造中国AI医疗标杆
  • Compose 适配 - 全屏显示 EdgeToEdge
  • python-flask-django重症监护室中急诊护理管理系统设计与实现_zjv2nt1d
  • 拿一句,逗得你家男人哭笑不得
  • 虎贲等考 AI:AI 赋能学术全流程,让论文写作从 “煎熬” 到 “高效”✨
  • 介观交通流仿真软件:VISSIM (介观模式)_(5).车辆行为模型
  • 英特尔酷睿Ultra第三代,如何推动AI PC规模化落地?
  • 15、密码学编程问题与解决方案
  • 【花雕学编程】Arduino BLDC 之基础差速转向小车(串口控制)
  • 【毕业设计】基于springboot+Android的研学旅行服务平台APP小程序设计(源码+文档+远程调试,全bao定制等)