Unreal Engine 5 · Blueprint → C++
Possess a Pawn in Unreal Engine 5 C++UE Docs
The Possess Blueprint node maps to AController::Possess(APawn*) in Unreal Engine 5 C++, which must be called on the server or authority to take control of a pawn.
Blueprint node & C++ equivalent
// On the server / authority:
MyPlayerController->Possess(MyPawn);What does the Possess node do?
Possess assigns a pawn to a controller so the controller drives that pawn's input and movement. It is how you switch which body a player or AI controls at runtime, such as entering a vehicle or swapping characters. The controller's previous pawn is unpossessed automatically.
The example shows MyPlayerController->Possess(MyPawn) called in an authority context.
How to use it in C++
Call Possess(APawn* InPawn) on an AController (including APlayerController and AI controllers). Because possession affects network ownership and is replicated from the server, it must run on the authority. Calling it on a client without authority will not work correctly.
Pair it with UnPossess() when you need to release control before possessing a different pawn explicitly.
Common mistakes
The most common mistake is calling Possess on a client, where it has no replicated effect. Guard the call with an authority check such as HasAuthority(). Possessing a pawn that is already possessed by another controller can also produce unexpected control hand-offs.
Frequently asked questions
How do you possess a pawn in UE5 C++?+
Call Possess(MyPawn) on the controller. Because it is replicated from the server, run it on the authority, typically guarded by HasAuthority().
Why does Possess not work on the client?+
Possession is server-authoritative and replicated, so calling Possess on a client without authority has no proper effect. Call it on the server.