I’m making a first-person game, which is supposed to be an eerie and immersive experience, and as such, I wasn’t happy with the default movement in first person (character is very jittery when in a ragdoll state, and very rigid when turning)
With my current solution, which is having the Humanoid.AutoRotate property set to false, and running the following in RunService:RenderStepped:
local humanoidState = humanoid:GetState()
if not camPart and humanoidState ~= Enum.HumanoidStateType.Ragdoll and humanoidState ~= Enum.HumanoidStateType.FallingDown then
local lookVector = -camera.CFrame.LookVector
local targetRotation = math.atan2(lookVector.X, lookVector.Z)
character:PivotTo(CFrame.new(character:GetPivot().Position) * character:GetPivot().Rotation:Lerp(CFrame.Angles(0, targetRotation, 0), .3))
end
And this makes the character slide when landing (As it doesn’t happen without the custom turning):
There’s one solution I found, of setting the character velocity to 0 when landing, but I dislike this fix, as it’s not very dynamic, and there are potential cases that I don’t want that to happen, which I’d prefer not to also hard-code.
Other than that, I haven’t really been able to find any other factors that might be affecting it.