How to manage different input situations

The edit you made is an example of how to switch from hosting the character to another object.

One of the implied use cases for this is to directly affect objects with similar input by using things like ControlRotation in the PlayerController.
Another use case is having input functionality in the pawns themselves, where you use GetPawn() to get the currently possessed pawn and then cast the pawn to its specific class so that you can call pawn-specific methods from the input binds in the PlayerController.

Let me know if you do not follow that 100% or if you need further example. I need to head to bed but if you haven’t figured it out when I get up or if no one else has offered examples I’ll try and help you with that approach if you would like to implement specific input handling via separate pawns.