I noticed an issue with the “IsCharacterAligned” feature you added, in which you lerp the CFrame of the HumanoidRootPart. This is common in over the shoulder systems, but is flawed because the result is that when a character is moving backwards or laterally, he will twitch because the user input (which wants the character to face one direction) is basically fighting with the code that is arbitrarily trying to set the direction the character is facing.
Alternatively, you can adjust the user’s settings in the code, with something like
UserSettings():GetService("UserGameSettings").RotationType = Enum.RotationType.CameraRelative
This will automatically change the character’s behavior so that it faces the direction of the camera, and is much simpler and more efficient in my opinion.
It’s worth noting that when I made this change to your code (substituting lines 263-265 with the line above), the character movement was much smoother. However while moving the camera does seem a little choppy.
Additionally, the bool controlling the IsCharacterAligned function on line 279 under
function CLASS:ConfigureStateForEnabled()
is set to “false”, so it didn’t actually work when I set it to true on line 47.