Player Controller Pitch isn't relative

In the flying template, I changed the movement and rotation. For pitch, I’m using Add Control Pitch Input. I’m doing the same thing for Roll. However, with Roll, the controller input is always relative to the controlled pawn. With Pitch, it’s always relative to the original orientation of the world.

In a flying game, for proper multiplayer replication, pitch needs to be relative to the controlled pawn. I’ve recreated the issue in a clean project and you can find it at.

You can see a video of the issue here (I’ve fixed the Gimbal Lock Issue)
Pitch Issue Video

This is because the player controller doesn’t have a phyiscal representation in the world. There is an option on the playercontroller class to “Attach to Pawn” But if you read the description it explicitly tells you that it expects the pawn to implement it’s own rotation. See here for a good metaphor that describes the system:


What you need to do is turn off the use controller rotation options:


And then use these nodes instead of the Add Controller Input nodes:

Add Actor Local Rotation doesn’t replicate very well in an MP game. You’ll see other players “stuttering” around the level. The advice thus far has been to use Add Controller Pitch, Roll, Yaw, movement as it’s processed automatically on the server and replicated to the clients seamlessly.

Add Local Rotation works well for single player for sure.