In what class should the input logic be when using blueprints?

Should the input logic, the stuff that defines how a human player can control your game, go on the Pawn(/Character/SpectatorPawn) or the PlayerController? Or even more specific, should rotation related input go on the PlayerController, and movement related input on the Pawn? I’m leaning more towards the latter because then you’re talking directly to local components of the blueprint classes.

I can get both situations to work, but I’m more specifically asking what the best practice would be.

Any suggestions?


A question like this has been answered by one of the devs on the forums here:

“To get a basic game up and running, you only really need the Pawn class. It’s the Pawn class that handles the input and moves itself around. Character is a special type of Pawn which includes ‘walking’ movement logic, and is used as the basis for templates like the side-scroller.”

“You really need to create your own PlayerController to handle logic outside of the Pawn, things like bringing up a mid-game menu for example. Our Character class is quite flexible, there are some great tutorials and example out there of extending it to add dodge, climbing etc. In 4.2 we made it even easier to do things like double jump, and we’ll be releasing a video tutorial to cover that.”

Hope this clarifies things a little more,


Thanks for the explanation!