Unable to read input on non-controlled actors (pawns)

I have an actor that needs to read player input using Blueprint, but it will not recognize any input unless it is possessed by that player.

Here’s what I’ve tried:

  1. Specifying the player in Input → Auto Receive Input in both the instance and blueprint settings
  2. Using the Enable Input blueprint node as shown here
  3. Disabling Block Input and setting the Auto Receive Input player in the GameController settings.

The only way I can get the actor to read input is either having the GameController spawn and possess it, or having it start possessed. What am I missing here?

1 Like

Any blueprint is capable of handling player input, in addition, non-player controller blueprints will get priority and, by default, consume the said input.

Putting this code in an actor and setting Auto Receive Input → Player 0, prints the actor’s name and consumes that input - meaning that the Player Controller can no longer handle it.

Disabling Consume Input will process this input and pass it further along the chain of Input Priority

Is this not the behaviour you’re observing?

tl;dr:


It seems that an unpossesed Pawn does not handle input but an Actor Component added to that Pawn is happy to process it.


1 Like

But a Player must exist/be connected in order to generate the input event in the first place, regardless of possession, right?

Not sure, but you do not need to possess anything to process input.

I have an actor that needs to read
player input using Blueprint, but it
will not recognize any input unless it
is possessed by that player.

What I understood from OP’s question is that (s)he is having doubts whether actors recognise player input. They do, of course.

There is a chance I’m misunderstanding something, though.

This is exactly what I was expecting to happen, and what I (think I’ve) experienced in the past. However, even with the setup and nodes you described, I’m still not reading any input on the pawn unless it’s possessed.

I have a test project here, maybe you can tell me what I’m doing wrong? https://drive.google.com/file/d/1cbFg7EqAiZab0xiFQliwf0F43GhDF6OM

EDIT: On a side note, it seems that if I set Auto Receive Input to a player and save the level, when I reopen the project that setting reverts back to Disabled. Changing it manually against doesn’t make the input work, but just thought that was strange.

That’s good to know, thanks a lot for figuring it out. If you edit your answer to include the pawn component I’ll accept it.

I think that the Player Controller and the Pawn class have a special relation and Pawns might be unable to process input while not possessed. If I just drop any other actor into your level, it works fine.

Something I did not know.

So your question really is “Can an unpossessed Pawn process input?”

The easy workaround here is to add an Actor Component to the Pawn - the component is happy to handle input even though the Pawn is not possessed.

Done. Hope that’s enough.

2023 reply :

Pawn is a class that receives input ONLY when possessed (Controlled by player0 or other). It cannot receive input when it’s not the case.

If you want to receive input on your non-controlled object in the map who’s BP inherits from “Pawn”, you’ll need to change its parent class from “Pawn” to “Actor”. Only then the input of your non-controlled Actor put in the map will be considered.

Make sure to use the “Enable Input” node on BeginPlay with target as “self” to be able to receive input :

Here is a video on that : Receiving input on a non controlled object in Unreal Engine 5 - YouTube

1 Like