Pawn:Pawn是玩家在场景中的具化对象
Pawn 是可那些由玩家或 AI 控制的所有 Actor 的基类。Pawn 是玩家或 AI 实体在游戏场景中的具化体现。这说明, Pawn 不仅决定了玩家或 AI 实体的外观效果,还决定了它们如何与场景进行碰撞以及其他物理交互。某些游戏可能在游戏中没有可见的玩家模型或替身(Avatar),因此这点在某些情况下可能会令人困惑。不过,无论如何,Pawn 仍代表着玩家或实体在游戏中的物理方位、旋转角度等。Character 是一种特殊的、可以行走的 Pawn。
默认情况下,控制器(Controllers)和 Pawn 之间是一对一的关系;也就是说,每个控制器在某个时间点只能控制一个 Pawn。此外,在游戏期间生成的 Pawn 不会被控制器自动控制。
在 蓝图(Blueprints) 中,为Pawn以及Pawn的子类添加移动的最佳方法是调用 SetActorLocation 函数。用 SetActorLocation 时,你可以决定是瞬移还是逐渐走到某个位置。如果是逐渐走到某个位置,那你的 Pawn 会沿某个方向移动,并且如果撞到东西就会停下来。
角色(character):角色即是默认拥有一定双足运动功能的Pawn。
添加 CharacterMovementComponent、CapsuleComponent 和 SkeletalMeshComponent 后,Pawn类可延展为功能完善的 角色 类。 角色用于代表垂直站立的玩家,可以在场景中行走、跑动、跳跃、飞行和游泳。 此类也包含基础网络连接和输入模型的实现。
骨架网格体组件
与pawn不同的是,角色自带 SkeletalMeshComponent,可启用使用骨架的高级动画。可以将其他骨架网格体添加到角色派生的类,但这才是与角色相关的主骨架网格体。 如需了解骨架网格体的更多内容,请参见:
PlayerController(玩家控制器):
PlayerController实现了从玩家获得输入数据并把它们转换为动作(比如运动、使用道具、开射武器)的功能。
PlayerController(玩家控制器) 是Pawn和控制它的人类玩家间的接口。PlayerController本质上代表了人类玩家的意愿。
当您设置PlayerController时,您需要考虑的一个事情就是您想在PlayerController中包含哪些功能及内容。您可以在 Pawn 中处理所有输入, 尤其是不太复杂的情况下。但是,如果您的需求非常复杂,比如在一个游戏客户端上的多玩家、或实时地动态修改角色的功能,那么最好 PlayerController中处理输入。在这种情况中,PlayerController决定要干什么,然后将命令(比如"开始蹲伏"、"跳跃")发布给Pawn。
同时,某些情况下,则必须把输入处理或其他功能放到PlayerController中。PlayerController在整个游戏在过程中都是一直存在的,但是Pawn可能是临时存在的。 比如,在死亡竞技模式的游戏中,您可能死了又重生,所以您将获得一个新的Pawn,但是您的PlayerController都是一样的。在这个示例中,如果您将分数保存到您的Pawn上, 那么分数将会重置,但是如果您将分数保存到PlayerController上,它将不会重置。
Actors: 对基本Gameplay元素、Actor和Object进行解释。
所有可以放入关卡的对象都是 Actor,比如摄像机、静态网格体、玩家起始位置。Actor支持三维变换,例如平移、旋转和缩放。你可以通过游戏逻辑代码(C++或蓝图)创建(生成)或销毁Actor。
在C++中,AActor是所有Actor的基类。
注意:Actor不直接保存变换(位置、旋转和缩放)数据;如Actor的根组件存在,则使用它的变换数据。