In the third-person game i am making, I’ve noticed that when moving the player around, the mesh of the character rotates smoothly but the movement of the character changes direction instantly. Is there any way I could make it so that instead of changing direction instantly when moving around, the character rotates toward the direction of inputted movement?
If you need to know, i am new to Unreal Engine 5 and have just started a few days ago.
Hey @efekiller420,
How are you implementing player motion, is it in blueprints? If you’d want to share some screenshots of your implementation it’d be a bit easier to understand what’s going on.
I would first recommend checking out some of this documentation: Setting Up Character Movement | Unreal Engine Documentation
I hope this can help!
-Zen
Hello @ZenLeviathan ,
I am using blueprint for the character’s movements, yes.
It seems that i was indirectly following the documented player movement setup guide, so my movement blueprint is the same.
But the documentation doesn’t solve my issue, this image shows how i want it to work.
I’ve set up an orbiting camera, which is why i want it to work like that.
In your case what you want to be moving by applying a force, a velocity in a direction.
use controlled velocity and release/stop the frequency at the the even you want to be
hope it helps
cheers!
How would i have to do this?
Are you using your own Pawn subclass, or the Character?
The Character movement component has a “max turn rate” you can configure. Set it lower to turn slower.
It also has various options for “use controller rotation” versus “orient heading to movement.”
Sorry for the late reply,
I am using a Character, there is no setting that goes exactly by “max turn rate” in the Character Movement component that i can find. There is a “rotation rate” but that only lets the mesh turn smoothly, not the direction of movement itself.
UPDATE
I have figured out how to smooth the character turning to work exactly how i wanted it to work, this is the setup i used in blueprint:
But for whatever reason whenever i stop movement, the mesh turns to face positive X.
EDIT: To stop the mesh from turning back to positive X, i just needed to unlink “Get World Delta Seconds”
Finally figure it out! You can use this directly on the Input.
You need to use FInterp in the axis value, give it the previous axis value as Current and the next axis value as Target, then we make sure to only apply the interpolation if the current axis value is not 0 meaning we stopped moving. This is pretty smooth!