Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local RunService = game:GetService("RunService")
- local UP = Vector3.new(0, 1, 0)
- local ZERO = Vector3.new()
- local character = script.Parent
- local root = character:WaitForChild("HumanoidRootPart")
- local torso = character:WaitForChild("Torso")
- local rootJoint = root:WaitForChild("RootJoint")
- local leftHip = torso:WaitForChild("Left Hip")
- local rightHip = torso:WaitForChild("Right Hip")
- local humanoid = character:WaitForChild("Humanoid")
- local LEAN_ANGLE = 0.3
- local LERP_STRENGTH = 0.2
- local cache = {
- root = {
- C0 = rootJoint.C0 - rootJoint.C0.Position,
- C1 = rootJoint.C1 - rootJoint.C1.Position
- },
- leftHip = {
- C0 = leftHip.C0 - leftHip.C0.Position,
- C1 = leftHip.C1 - leftHip.C1.Position
- },
- rightHip = {
- C0 = rightHip.C0 - rightHip.C0.Position,
- C1 = rightHip.C1 - rightHip.C1.Position
- }
- }
- local rootOffset = CFrame.new()
- local leftHipOffset = CFrame.new()
- local rightHipOffset = CFrame.new()
- RunService.Stepped:Connect(function()
- local newDirection = humanoid.MoveDirection
- local newRootOffset = CFrame.new()
- local newLeftHipOffset = CFrame.new()
- local newRightHipOffset = CFrame.new()
- if newDirection ~= ZERO then
- local relativeDirection = (root.CFrame - root.Position):Inverse() * newDirection
- local axis = relativeDirection:Cross(UP)
- newRootOffset = cache.root.C1:Inverse()
- * CFrame.fromAxisAngle(axis, -LEAN_ANGLE)
- * cache.root.C0
- newLeftHipOffset = cache.leftHip.C1:Inverse()
- * CFrame.fromAxisAngle(axis, LEAN_ANGLE)
- * cache.leftHip.C0
- newRightHipOffset = cache.rightHip.C1:Inverse()
- * CFrame.fromAxisAngle(axis, LEAN_ANGLE)
- * cache.rightHip.C0
- end
- rootOffset = rootOffset:Lerp(newRootOffset, LERP_STRENGTH)
- leftHipOffset = leftHipOffset:Lerp(newLeftHipOffset, LERP_STRENGTH)
- rightHipOffset = rightHipOffset:Lerp(newRightHipOffset, LERP_STRENGTH)
- rootJoint.Transform *= rootOffset
- leftHip.Transform *= leftHipOffset
- rightHip.Transform *= rightHipOffset
- end)
RAW Paste Data