Character Torso Bending

With R15, the UpperTorso’s Waist joint will allow you to rotate the body around to your liking.
You can adjust the C0 to be able to rotate it around to the desired rotation.
But how?
Well, somehow we need to rotate the humanoid to the camera’s look vector Y position.
We will have to start off the code with a variable, which will function as the camera’s lookvector Y.
local cameralookvectorY = workspace.CurrentCamera.CFrame.LookVector.Y
Now we have a variable which will show what our character wants to rotate to.
Now, we need to use math.asin to be able to find our desired radians. We can do this by creating a variable that represents math.asin(), with x being cameralookvectorY. This is what it should look like now.
local cameralookvectorY = workspace.CurrentCamera.CFrame.LookVector.Y
local radian = math.asin(cameralookvectorY)
Now that we have the radian, we are now able to rotate the waist. We can use CFrame.fromEulerAnglesYXZ() to rotate the waist, with rx being the radian. We will now also have another variable representing the C0 of the waist. This is an example of what it should look like in a localscript:
local c0 = game.Players.LocalPlayer.Character:WaitForChild("UpperTorso"):WaitForChild("Waist").C0
function updatewaist()
local cameralookvectorY = workspace.CurrentCamera.CFrame.lookVector.Y
local radian = math.asin(cameralookvectorY)
game.Players.LocalPlayer.Character.UpperTorso.Waist.C0 = c0*CFrame.fromEulerAnglesYXZ(radian,0,0)
end
Hope I helped!

9 Likes