local S=Players.LocalPlayer local e=script.Parent local z=e:WaitForChild("\072\117\109\097\110\111\105\100")local l=e:WaitForChild("\072\117\109\097\110\111\105\100\082\111\111\116\080\097\114\116")local E=e:WaitForChild("\084\111\114\115\111")local s=l.RootJoint local B=E["\076\101\102\116 \072\105\112"]local f=E["\082\105\103\104\116 \072\105\112"]local function m(S,e,z)return S+(e-S)*z end local y=nil local H=nil local g=0 local k=0 local t=s.C0 local F=B.C0 local O=f.C0 RunService.RenderStepped:Connect(function()y=l.Velocity*Vector3.new(1,0,1)if y.Magnitude>2 then H=y.Unit g=l.CFrame.RightVector:Dot(H)k=l.CFrame.LookVector:Dot(H)else g=0 k=0 end s.C0=s.C0:Lerp(t*CFrame.Angles(math.rad(k*5),math.rad(-g*5),0),.2)end)

local Player = Players.LocalPlayer
local Character = script.Parent
local Humanoid = Character:WaitForChild("Humanoid")

local HumanoidRootPart = Character:WaitForChild("HumanoidRootPart")
local Torso = Character:WaitForChild("Torso")

local RootJoint = HumanoidRootPart.RootJoint
local LeftHipJoint = Torso["Left Hip"]
local RightHipJoint = Torso["Right Hip"]

local function Lerp(a, b, c)
	return a + (b - a) * c
end

local Force = nil
local Direction = nil
local Value1 = 0
local Value2 = 0

local RootJointC0 = RootJoint.C0
local LeftHipJointC0 = LeftHipJoint.C0
local RightHipJointC0 = RightHipJoint.C0

RunService.RenderStepped:Connect(function()
	--> To get the force, we multiply the velocity by 1,0,1, we don't want the Y value so we set y to 0
	Force = HumanoidRootPart.Velocity * Vector3.new(1,0,1)
	if Force.Magnitude > 2 then
		--> This represents the direction
		Direction = Force.Unit	
		Value1 = HumanoidRootPart.CFrame.RightVector:Dot(Direction)
		Value2 = HumanoidRootPart.CFrame.LookVector:Dot(Direction)
	else
		Value1 = 0
		Value2 = 0
	end

	--> the values being multiplied are how much you want to rotate by

	RootJoint.C0 = RootJoint.C0:Lerp(RootJointC0 * CFrame.Angles(math.rad(Value2 * 5), math.rad(-Value1 * 5), 0), 0.2)
end)
