{ }Blueprint → C++

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

C++
// 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.

Related Character & Pawn nodes

View all Character & Pawn nodes →