Smooth Character Rotation not walking backwards properly

I was trying to make a smooth character rotation with CFrame Lerping the root to the camera’s looking position, I achieved the smoothness I wanted but the player seems to have problems to keep looking forwards when walking backwards

I tried to search for the same topic about smooth character rotation and that, all they suggest the same script I’ve made so far or BodyGyro (which gives the same result), I even used a Module made to do an Over-The-Shoulder Camera System in which the character align was also bugged in the same way (here the module if you want to check it out)

This is the short code of the smooth rotation I’ve made for it

local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local root = character:WaitForChild("HumanoidRootPart")
local camera = workspace.CurrentCamera

local percent = 0.4
local upvector = Vector3.new(0, 1, 0)

game:GetService("RunService").Stepped:Connect(function()
	local right = upvector:Cross(-camera.CFrame.LookVector)
	local target = CFrame.fromMatrix(root.Position, right, upvector)
	root.CFrame = root.CFrame:Lerp(target, percent)
end)

And this is a video about the problem I’m having.

External Media
1 Like

Try unticking humanoid.AutoRotate
This property describes whether or not the humanoid rotates the character when walking and stuff like that

1 Like

Thank you very much! I’m still learning a lot of things