news 2026/6/10 15:51:51

同步路径查找:FindPathToLocationSynchronously

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
同步路径查找: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寻路、自动导航等场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 8:44:27

DL00308 - 高光谱遥感反演机器学习代码中的植被指数分析

DL00308-高光谱遥感反演机器学习代码植被指数分析python 原始光谱一阶导数光谱的相关性以及水平检验, 植被指数、遥感参数的相关系数以及水平检验, 去偏移值最小二乘回归最近在研究高光谱遥感反演机器学习代码&#xff0c;其中植被指数的分析部分真的很有趣&#x1f603;。 原始…

作者头像 李华
网站建设 2026/6/9 4:03:58

如何将外包与内部团队的平衡

在当今竞争激烈的商业环境中&#xff0c;企业在资源分配与团队管理上面临着前所未有的挑战。**要实现外包与内部团队的平衡&#xff0c;关键在于明确核心业务边界、建立协同机制、强化沟通与文化融合。**只有做到“取其所长、补己所短”&#xff0c;企业才能在保持灵活性的同时…

作者头像 李华
网站建设 2026/6/9 4:42:21

谁懂大龄程序员[特殊字符]‍[特殊字符]的痛啊

这是来自小红书一位后端开发工程师分享的和前段老婆关于裁员失业的焦虑。 说真的&#xff0c;这两年看着身边一个个搞Java、C、前端、数据、架构的开始卷大模型&#xff0c;挺唏嘘的。大家最开始都是写接口、搞Spring Boot、连数据库、配Redis&#xff0c;稳稳当当过日子。 …

作者头像 李华
网站建设 2026/6/6 14:44:46

Docker(单机Kafka安装)

1. pull镜像 docker pull zookeeper docker pull wurstmeister/kafka2. 创建通信网络。zookeeper和kafka之间的通信 docker network create kafka_zk_net查看网络 docker network ls docker network inspect kafka_zk_net3. 创建容器 docker run --netkafka_zk_net --name z…

作者头像 李华
网站建设 2026/6/10 11:32:25

DDD碎片记录 01.落地到数据库设计

系统用例设计&#xff0c;分析系统需要完成的功能。分析系统的业务实体&#xff0c;在领域模型分析中采用类图的形式&#xff0c;每个类可以通过其属性来表述数据结构&#xff0c;又可以通过添加方法来描述对数据结构的处理。 因此在领域模型的设计过程中&#xff0c;即完成了对…

作者头像 李华
网站建设 2026/6/10 13:36:40

推荐汽车制造业拧紧工艺智能化解决方案有哪些?

拧紧工艺&#xff1a;汽车制造中的隐形守护者在当今汽车制造业的快节奏发展环境中&#xff0c;拧紧工艺系统作为连接关键零部件的隐形支柱&#xff0c;扮演着不可忽视的角色。想象一下&#xff0c;一辆汽车的发动机缸盖螺栓如果不精确拧紧&#xff0c;可能会导致密封失效&#…

作者头像 李华