How to smoothly reset camera position without use of "SetControlRotation"

Not my video but essentially this Except I would need to also work the same if the character is moving. It’s done in Silent Hill 2 if you’ve ever played that. and quite a few other third person games. I’m just posting this to make sure there’s no confusion. I wish I could look at how they were done because you would think something like this that so many games use would be more accessible to learn.

Yes, that would be where I used the Attach node. If you snap the camera to the character, the reset rotation should work just right.

So that’s a standard TPS template, I see; for some reason I was thinking you have made something custom.

As I understand it, in TPS movement is based on the Camera rotation, not on the Character rotation; and so it happens that when you press D and the Character moves right respective to the camera, and then you start forcedly rotate the Camera while still pressing D, at every moment of time the Character turns mode right, and so you get yourself into an infinite loop.

What I can suggest you now is making the reset quite fast, like 0.5-second long, with disabling input before it starts and enabling it right after it’s done.

Hmm good idea I’ll try that and get back to you.

But mind that when you disable input you have to disrupt the connection from the movement axis input to character movement; just set a branch with a bool variable after the input node. Otherwise if you disable input before the movement key is released, the character will continue moving even if you release the key after the input is disabled, because the controller will never receive the key release signal.

Edit: or use Set Ignore Move Input

Ok so what I did now was shorten the timeline, SetIgnoreMovement (True) before the timeline, then to false after the SeControlRotation. But still spins out fast and if I’m walk toward the camera and reset the camera shakes until the inevitable turn around of the player character.

Hi!

I’ve been struggling with this exact same issue for a few days as well, and I finally found the solution.

The key is to set OrientRotationToMovement variable (of the Character Movement component) to false just before the rotation, and then set it back to true when it’s done. That’s the only thing that worked for me, I hope it will help you too :slight_smile:

Thanks, I’ll try it out when I have a moment to get back to it I just spent the last four months building an inventory system.