I’m not too advanced in it, so I can’t explain the code behind it, but basically its moving joints so the touch they ground where they should land.
There are a couple IK tutorials on the devforum, you should be able to find one for R6.
That just looks like specific animations playing (which, by default, uses Inverse Kinematics) for a specific movement direction. The smooth fading into the next animation is controlled by the fade of the playing of the next animation.
It’ll fade into the next animation and not snap to it. Giving you that smoothness you’re looking for.
Oh if it’s just the torso then this other resource may help:
This is the bit of code that handles the torso leaning and also rotation using the character’s current velocity…A bit complex but I think it’s possible to learn if you separate the CFrame operations one by one and subsitute values for it and see what changes.
local relv0 =lowercf:vectorToObjectSpace(rootvel)
local relv1 =relv0*0.2
do -- Upper Torso
local goalCF = waistjoint.C1:Lerp(waist1*ANGLES(math.rad(relv1.Z),0.1*math.cos(right)-2*math.rad(relv1.X),math.rad(-relv1.X)):inverse(),dt10)
waistjoint.C1 = goalCF