Unreal Engine 4 API Analysis - AController

AController是Unreal Engine 4中的非物理Actor,负责控制Pawn的行为。PlayerController用于人类玩家操控Pawn,而AIController实现AI控制。通过Process()和UnProcess()管理Pawn,并在Pawn事件中进行干预。ControlRotation定义了Pawn的方向,受输入控制。本文将探讨AController的变量、构造函数、从AActor、UObject和INavAgentInterface继承的函数。
摘要由CSDN通过智能技术生成

class AController :
    public AActor ,
    public INavAgentInterface 

Remarks

Controller 是非物理 Actor,可以掌管一个 Pawn 来控制它的行为。

PlayerController 被人类玩家使用以控制 Pawn 。同时 AIController 为其控制的 Pawn 实现了人工智能。

Controller 使用 Process() 方法来掌管 Pawn ,也可以使用 UnProcess() 来放弃对当前 Pawn 的掌管。

Controller 为其掌管的 Pawn 中的很多事件获取通知,使得其有机会实现响应事件的行为,拦截事件并代换 Pawn 的默认行为。

ControlRotation(通过 GetControlRotation() 访问)决定被控制的Pawn 的指定方向,并且受到输入的影响。

Variables

 unit32:1bAttachToPawn如果为 true 控制器位置将匹配所掌管的 Pawn 的位置
 unit32:1bIsPlayerController是否该控制器是一个PlayerController
 FRotatorControlRotation此控制器的控制旋转,参阅 GetControlRotation
 unit8IgnoreLookInput忽略查找输入,
 unit8IgnoreMoveInput忽略运动输入,使用访问者函数 IgnoreMoveInput() 堆叠状态存储。
 FInstigatedAnyDamageSignatureOnInstigatedAnyDamage?当此控制器有任何方式的煽动伤害时被调用
 FPawnChangedSignatureOnNewPawn 
 APlayerState *PlayerState包含关于使用此控制器的玩家的复制信息,不包括NPC玩家
 

TWeakObjectPtr <class AActor >

StartSpotActor标记此控制器产生的位置。
 FNameStateName当前控制器处于的GameState名称

 

 

 

 

 

 

 

 

 

 

 

Constructors

 

AController
(
    const FObjectInitializer & ObjectInitializer
)

默认构造函数

 

 

 

Functions

 

virtual void

AddPawnTickDependency
(
    APawn * NewPawn
)

增加依赖,使得我们在给定Pawn之前开始tick。这使得输入处理和Pawn移动之间的等待时间最小化。
 

virtual void

AttachToPawn
(
    APawn * InPawn
)

将控制器物理地连接到具体指定的Pawn上,以至我们的位置反应Pawn的位置。控制器的旋转继续和ControlRotation匹配。尝试附加到一个是nullptr的Pawn上时,调用DetachFromPawn()替代上述动作。
 

virtual void

BeginInactiveState

(

)

子类重写覆盖:APlayerController::BeginInactiveState()

在未激活状态下State进入(没有被掌管的Pawn,没有处于观看状态,etc)

 

APlayerController *

CastToPlayerController

(

)

反对使用!使用“标准转型”结点替换。如果可能的话将Controller转型成PlayerController
 

virtual void

ChangeState
(
    FName NewState
)

子类重写覆盖:APlayerController::ChangeState()

将当前状态改为新命名的状态

 

virtual void

CleanupPlayerState

(

)

子类重写覆盖:APlayerController::CleanupPlayerState()

被Destory()调用,清除PlayerState

 

void

ClientSetLocation
(
    FVector NewLocation,
    FRotator NewRotation
)

可复制的函数,用来设置Pawn位置和旋转,允许服务器强制传送
 

void

ClientSetRotation
(
    FRotator NewRotation,
    bool bResetCamera
)

可复制的函数,用来设置Pawn位置,允许服务器强制传送
 

virtual void

CurrentLevelUnloaded

(

)

当这个控制器处于的关卡正在通过流卸载时被调用
 

virtual void

DetachFromPawn

(

)

将RootComponent从其父体分离,但前提是bAttachToPawn是true,并且它已经被附加到一个Pawn上。
 

virtual void

DisplayDebug
(
    class UCanvas * Canvas,
    const FDebugDisplayInfo & DebugDisplay,
    float & YL,
    float & YPos
)

子类重写覆盖:

AAIController::DisplayDebug()

APlayerController::DisplayDebug()

 

 

virtual void

EndInactiveState

(

)

重写:APlayerController

当离开非激活状态时被调用

 

virtual void

FailedToSpawnPawn

(

)

重写:APlayerController

当GameMode为我生产Pawn失败时调用

 

virtual void

GameHasEnded
(
    class AActor * EndGameFocus,
    bool bIsWinner
)

重写:1

游戏结束后从GameMode调用,用于过渡到合适的状态

 

ACharacter *

GetCharacter

(

)

获取Character的指针
 

virtual FRotator 

GetControlRotation

(

)

获取ControlRotation的副本

这是全瞄准的旋转。其可以不同于相机的取向(比如第三人称中),并且可以不同于被控制的Pawn的旋转(比如Pawn选择不显示地旋转)

 

virtual FRotator 

GetDesiredRotation

(

)

获取期望的Pawn目标旋转的副本
 

FPawnChangedSignature 

GetOnNewPawnNotifier

(

)

 
 

APawn *

GetPawn

(

)

获取Pawn的指针
 

template<class T>
T *

GetPlayerState

(

)

控制器的PlayerState被强制转化成模板类型,如果没有指定模板类型则返回NULL,如果强制转化失败也会返回NULL

 

virtual void

GetPlayerViewPoint
(
    FVector & Location,
    FRotator & Rotation
)

重写1

返回玩家的观察点,对于AI意味着Pawn的眼睛的ViewPoint。对于认类玩家意味着摄像机ViewPoint。通过引用参数传递。

 

FName

GetStateName

(

)

获取当前State的名字的副本
 

USceneComponent *

GetTransformComponent

(

)

获取TransformComponent的指针
 

virtual AActor *

GetViewTarget

(

)

重写1

获取当前Controller正在监视的Actor的指针

 

virtual void

InitNavigationControl
(
    UObject *& PathFollowingComp
)

初始化路径跟踪组件
 

virtual void

InitPlayerState

(

)

生成并初始化该控制器的PlayerState
 

virtual void

InstigatedAnyDamage
(
    float Damage,
    const class UDamageType * DamageType,
    class AActor * DamagedActor,
    class AActor * DamageCauser
)

当控制器引起任何损害的时候被调用
 

bool

IsInState
(
    FName InStateName
)

如果当前状态是状态名,返回true
 

virtual bool

IsLocalController

(

)

当该控制器是本地控制器时返回true
 

virtual bool

IsLookInputIgnored

(

)

如果查找输入被忽略,则返回true
 

virtual bool

IsMoveInputIgnored

(

)

如果运动输入被忽略,则返回true
 

bool IsPlayerController

(

)

内联函数

如果该控制器是PlayerController返回true

 

APawn *

K2_GetPawn

(

)

返回被当前被PlayerController控制的Pawn的指针
 

virtual bool

LineOfSightTo
(
    const class AActor * Other,
    FVector ViewPoint,
    bool bAlternateChecks
)

检查线到其他的Actor的中心和顶部,如果控制器的Pawn可以看到其他Actor返回true
 

virtual void

OnRep_Pawn

(

)

复制通知回调
 

virtual void

OnRep_PlayerState

(

)

 
 

virtual void

PawnPendingDestroy
(
    APawn * inPawn
)

被调用来解除掌控Pawn应为Pawn将被销毁,其他解除掌控的处理由UnProcess()处理
 

virtual void

Possess
(
    APawn * InPawn
)

重写12

将该Controller附加指定的Pawn上,只在网络权限上运行

(当HasAuthority()返回true时)

 

void

ReceiveInstigatedAnyDamage
(
    float Damage,
    const class UDamageType * DamageType,
    class AActor * DamagedActor,
    class AActor * DamageCauser
)

当该控制器引起任何损坏时发生
 

virtual void

RemovePawnTickDependency
(
    APawn * InOldPawn
)

移除依赖以至于我们在指定Pawn之前tick
 

virtual void

ResetIgnoreInputFlags

(

)

重置运动和查找输入的忽略标志
 

virtual void

ResetIgnoreLookInput

(

)

停止忽略查找输入
 

virtual void

ResetIgnoreMoveInput

(

)

停止忽略运动输入
 

virtual void

SetControlRotation
(
    const FRotator & NewRotation
)

设置control rotation。RootComponent的旋转也将被更新至和它匹配

如果RootComponent->bAbsoluteRotation 是true

 

virtual void

SetIgnoreLookInput
(
    bool bNewLookInput
)

锁定或解锁查找输入,连续调用堆栈并需求相同数目的调用撤销或者都可以使用ResetIgnoreLookInput.撤销
 

virtual void

SetIgnoreMoveInput
(
    bool bNewMoveInput
)

锁定或解锁移动输入,连续调用堆栈并需求相同数目的调用撤销或者都可以使用撤销ResetIgnoreMoveInput.
 

virtual void

SetInitialLocationAndRotation
(
    const FVector & NewLocation,
    const FRotator & NewRotation
)

重写1

设置控制器的初始位置和旋转以及控制旋转。

通常在控制器首次创建时调用

 

 

virtual void

SetPawn
(
    APawn * InPawn
)

重写12

通常只有在掌管或不掌管一个Pawn在内部调用

 

 

void

SetPawnFromRep
(
    APawn * InPawn
)

 
 

virtual void

StopMovement

(

)

重写2

中止控制器当前正在执行的移动

 

virtual void

UnPossess

(

)

重写12

因为任何理由需要解除掌管,除了Pawn被销毁时

那时用PawnDestroyed()处理

 

 

virtual void

UpdateNavigationComponents

(

)

如果控制器具有任何与导航相关的组件,那么这个函数使它们更新缓存的数据

 

声明:这个功能已经被

PathFollowingComponent通过观察新被掌管的Pawn

接管

通过OnNewPawn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Overrideen from AActor

 

virtual void

Destroyed

(

)

一旦该actor被删除时调用
 

virtual void

GetActorEyesViewPoint
(
    FVector & OutLocation,
    FRotator & OutRotation
)

 
 

virtual FString 

GetHumanReadableName

(

)

返回代表该对象的字符串(人类可读)
 

virtual void

K2_DestroyActor

(

)

销毁该actor
 

virtual void

PostInitializeComponents

(

)

重写以创建玩家的复制信息并执行其他常规初始化任务
 

virtual void

Reset

(

)

重置actor到初始化状态,当重启关卡而不重新加载时使用该函数
 virtual void TickActor
(
    float DeltaTime,
    enum ELevelTick TickType,
    FActorTickFunction & ThisTickFunction
)

Controller Tick Controllers are never animated, and do not look for an owner to be ticked before them Non-player controllers don't support being an autonomous proxy

TickController永远不是动画的,而且不要在非玩家控制器不支持成为一个自治代理

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Overriden from UObject

 

virtual void

GetLifetimeReplicatedProps
(
    TArray < FLifetimeProperty > & OutLifetimeProps
)

返回用于网络复制的属性

 

 

 

Overriden from INavAgentInterface

 

virtual void

GetMoveGoalReachTest
(
    const AActor * MovingActor,
    const FVector & MoveOffset,
    FVector & GoalOffset,
    float & GoalRadius,
    float & GoalHalfHeight
)

获取圆柱体来检查actor是否已经就位
 

virtual FVector 

GetNavAgentLocation

(

)

检索代理的坐标
 

virtual const FNavAgentProperties &

GetNavAgentPropertiesRef

(

)

 
 

virtual IPathFollowingAgentInterface *

GetPathFollowingAgent

(

)

检索该NavAgent的代理跟踪路径
 

virtual bool

IsFollowingAPath

(

)

检查代理是否主动跟踪导航路径
 

virtual bool

ShouldPostponePathUpdates

(

)

允许延迟重路由请求

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值