控制器

Controllers(控制器) 不是物理Actor,它可以控制一个Pawn(或Pawn的子类,比如Character)来掌控它的动作。人类玩家使用PlayerControllers来控制Pawn,而AIControllers实现了它们所控制的Pawn的人工智能。控制器使用 Possess 函数控制Pawn,使用 Unpossess 函数放弃控制Pawn。

控制器接收它们控制的Pawn发生的很多事件的通知。这使得控制器可以有机会实现某种行为 来对该事件做出反应、可以拦截事件并取代该Pawn的默认行为。您可以让控制器在某个特定的Pawn之前进行更新,这将会最小化 输入处理和Pawn运动间的延迟。

根据玩家类型的不同有不同类型的控制器,这些玩家类型包括 控制人类的玩家或控制AI的玩家。人类控制的玩家使用PlayerController,而AI控制的玩家则使用 AIController。这些类都继承于基类Controller,该基类提供了类似于运动这样的通用功能。

默认情况下,Controller和Pawn之间是1对1的关系,任何时候每个Controller仅控制一个Pawn。对于大部分游戏来说,这是可以接受的, 但是当某些游戏类型具有实时策略功能时,就需要具有一次性控制多个实体的功能了。

PlayerController实现了从玩家获得输入数据并把它们转换为动作(比如运动、使用道具、开射武器)的功能。 这些动作一般会传递到该系统的其他组件上,最常见的是传递给Pawn和Camera(相机)。

AIController主要对来自环境和游戏世界的输入作出反应。而PlayerController则依赖于人类玩家来做出如何反应的决定, 并在游戏中简单地把这些决定转换为动作,但AIController则必须靠自己来观察周围的世界并相应地 做出反应。