Custom Movement System Help

I am attempting to create a custom movement script and ditch the old roblox one. Currently the way I achieve this is having the player only able to move forwards using the Humanoid:MoveTo() function which moves the player to a position a stud ahead of them. When the player presses A or D a BodyGyro rotates the root part, turning them.

I am aware that BodyGyro is deprecated, and using Humanoid:Move() feels a bit clunky and wrong, are there any other ways to refine this method? Ideally Humanoid.WalkSpeed should still have an effect on the speed of the movement.

Thanks!

Roblox has a different movement system called StrafingAnimations you can enable it by going to Players > UseStrafingAnimations