Difference between "Orient Rotation to Movement" and "Use Controller Desired Rotation"

So just wondering if anyone knows what the difference is between “Orient Rotation to Movement” and “Use Controller Desired Rotation” on the CharacterMovementComponent.

I have an AI controlled character, which can move around. Obviously I want the character the turn to face the direction it is moving when it starts moving. I’ve tried out both of these settings (i.e. turning one on with the other off and vice versa) and they both seem to do exactly the same thing. I cannot see any visual difference in the way the character moves and turns with one or the other. So I’m just wondering what is the difference and which one should I use? Is there pros/cons to one over the other?

You probably won’t see much difference for AI-controlled characters, but for your player character the difference is this:

“Orient Rotation to Movement”: Your character will turn to face the direction of travel. No matter which way the camera is facing, your character will always face the direction in which he or she is moving.

“Use Controller Desired Rotation”: Your character will orient to the direction of the controller rotation. In most games, this is visually represented by the direction of the camera so your character’s back is always to the camera and he or she rotates to match when the camera is swung. Of course, you can decouple your camera from following the control rotation as well so a more accurate description is that the character will face whichever direction the “right stick” or “Mouse X” is pointing.

Again, you don’t control the AI so both of these options look identical to a third party. I think “Orient Rotation to Movement” looks more natural, but there’s really no big difference, visual or otherwise, for the AI.

Thanks for the explanation, makes complete sense now. I will stick with Orient Rotation to Movement because it is above the fold in the list so makes it easier to see that it is ticked.

Haha, perfectly reasonable reason with all other things equal :slight_smile:

Hi, you said: “you can decouple your camera from following the control rotation as well”. How that could be done?

The SpringArm Component has a built-in functionality to automatically rotate towards the Control Rotation.
In the Springarm Component, there a the following Flags:
Use Pawn Control Rotation
Inherit Yaw
Inherit Pitch
Inherit Roll.

Mostly you want to tick the first three (Roll is not wanted most of the time)

This way you can move your Camera (in conjunction with Mouse X and Mouse Y or any other analog input) independently from your pawn.

I for myself do not use “Orient Rotation to Movement” because it still looks unrealistic.
A tip:
When moving, use the Actors’ Forward Vector and slowly interpolate from Actor Rotation to Control Rotation (Yaw only, though).
This gives a more natural movement.