在Unreal Engine 5(UE5)中,Get PlayerPawn和Get PlayerController的区别以及如何计算玩家和目标之间的距离。

一、两者区别

在Unreal Engine 5(UE5)中,获取玩家的位置信息通常有两种方式:通过PlayerPawn或通过PlayerController。具体使用哪一个取决于你想要获取的是哪个实体的位置。

1.Get Player Pawn

  • PlayerPawn是玩家实际控制的角色或Actor。在游戏中,它通常代表玩家的物理存在(比如角色、车辆等)。

  • 如果你想要获取玩家角色的位置(即玩家在游戏世界中的具体位置),那么你应该使用Get Player Pawn来获取当前玩家的Pawn,然后调用GetActorLocation来获取其位置。

  • 注意:如果游戏没有Pawn(例如,玩家还没有生成角色),那么返回的可能是空(None)。

2.Get Player Controller

  • PlayerController是玩家控制的逻辑控制器,它负责控制Pawn。一个PlayerController可以控制多个Pawn(虽然通常一次只控制一个),并且即使没有Pawn,PlayerController也存在。

  • PlayerController本身也是一个Actor,所以它也有位置(GetActorLocation)。但是,PlayerController的位置通常并不代表玩家的位置,而是代表控制器在游戏世界中的位置(在大多数情况下,这个位置与Pawn的位置相同,因为控制器会附着在Pawn上)。然而,在某些情况下(比如死亡后观察者模式),PlayerController的位置可能独立于Pawn。

  • 通常,我们不会直接使用PlayerController的位置来代表玩家的位置,因为玩家的位置应该是Pawn的位置。

  • 如果你需要获取玩家角色(即玩家在游戏中控制的实体)的位置,你应该使用Get Player Pawn,然后调用GetActorLocation

  • 如果你需要获取PlayerController的位置,你可以使用Get Player Controller然后GetActorLocation,但这种情况较少见。

核心区别
Get Player Pawn

作用:直接获取玩家控制的角色/物体(如Character或Pawn)。

位置信息:通过GetActorLocation()可直接获得玩家在世界中的物理位置。

适用场景:99% 的玩家位置需求(如检测角色坐标、距离计算等)。

Get Player Controller

作用:获取玩家的控制器(逻辑层对象)。

位置问题:控制器本身没有物理位置!其位置通常等于当前控制的Pawn位置(通过GetPawn()->GetActorLocation()间接获取)。

适用场景:需要处理玩家输入、UI、摄像机控制等逻辑时。

推荐节点

1.玩家角色物理位置 Get Player Pawn → GetActorLocation()

优先用 Get Player Pawn + GetActorLocation() 获取玩家位置,除非明确需要视角或控制逻辑。

2.摄像机/视角位置 Get Player Controller → GetPlayerViewPoint()

3.输入/UI控制 Get Player Controller

注意事项
多人游戏:

在服务器端调用Get Player Pawn时,需指定目标玩家(如遍历Get All Players)。

Pawn未生成:

若玩家尚未生成角色(如死亡状态),Get Player Pawn可能返回null。此时:

方案1:通过Controller的GetFocalLocation()获取焦点位置(如摄像机位置)。

方案2:使用复活前的缓存位置。

二、计算玩家和目标之间的距离

获取玩家和目标的位置并计算两者之间的距离

用Get Player Pawn简单高效,计算两者之间的距离准确

用Get Player Controller获取的位置信息计算两者之间的距离可能不是正确的

蓝图方案一:

蓝图方案二:

相关推荐
香辣牛肉饭2 小时前
【算法】动态规划 最长公共子序列(LCS)
经验分享·笔记·算法·动态规划
迷途呀2 小时前
Python:函数中的参数类型
开发语言·笔记·python·langchain·nlp
依然范特东3 小时前
动手学深度学习笔记--卷积层、微调
人工智能·笔记·深度学习
金伟API10244 小时前
SQL Server基础学习笔记
笔记·学习
砚凝霜5 小时前
软考网络工程师|第 1 章 计算机网络基础 完整备考笔记
网络·笔记·计算机网络
岑梓铭6 小时前
《考研408数据结构》第七章(7.1 查找:顺序查找、折半查找、分块查找)复习笔记
数据结构·笔记·考研·408·ds·查找
金伟API10246 小时前
常见的SQL面试题:经典50例
数据库·人工智能·笔记·sql·学习
DES 仿真实践家6 小时前
Plant Simulation SimTalk基础教程(3)SimTalk 变量与数据类型
开发语言·笔记·学习
逸模7 小时前
多业态连锁,如何同步铺开各类门店
大数据·人工智能·笔记·工程·公装·连锁店
郝学胜-神的一滴8 小时前
中级OpenGL教程 022:探秘三维世界的血脉传承——物体父子关系与矩阵递归奥义
c++·线性代数·unity·矩阵·游戏引擎·unreal engine·opengl