How to make the player Rotate / Turn at a specific rate

Noticed this question has been asked quite a few times and has little to no modern solution. The solutions that have been provided are all outdated at this point.

“How to clamp the characters rotation”
“How to slow characters spin speed”
Etc. Here’s some links to help understand the issue.

I have tried quite a few different solutions and haven’t found anything that really solves this problem in an elegant and professional way. I will list some of the things I’ve tried and explain why they aren’t ideal.

  • Firstly I tried an AngularVelocity max torque.
    This gives the proper slow spin look but only for the character, this doesn’t actually change the players movement vector.

  • I then tried to lerp the input bool for WASD. This works, but doesn’t work for all platforms and many other problems arise from this. There is then quite a bit of delay and very sluggish feel to the turning. (Probably a viable solution but would require alot of reworking other inbuilt movement scripts.)

  • So with that in mind I decided to try and track down the actual movement vector inside of the in-built Roblox movement system. I have yet to understand how these scripts work and seems to cause problems for other platforms as well. (This is also probably viable I just don’t have the skills to find a solution.)

  • Lastly I tried to write a full custom movement system using MoveTo.
    This works. BUT once again feels sluggish and strays to far away from the Roblox inbuilt system. So things like jump have to be rebuilt into the custom system and never feel perfect. But like I said this works, but isn’t ideal or an elegant solution.

The reason I am writing this post is to see if someone smarter than me knows something that I am very clearly missing. There are a few examples of people using BodyVelocity and BodyAngularVelocity to achieve this back when those were still a thing. I’m unsure of a way to do this with the new AngularVelocity.

Once again my goal is to keep the inbuilt roblox movement and jump. Just simply change the camera and slow or lock the players rotation.