I have been looking at this foot planting script by AxisAngle and I was wondering how he got the joints of the legs to rotate on more than just one axis using the motor6Ds in the torso of the character. My question is how do I calculate the C0 and C1 of the joints to get it to rotate on the axis I want it to? If that makes any sense? I can't really wrap my head around the math behind the script and I was wondering if anyone could help me. Here is his script.
--Script by TreyReynolds wait(1) User = game.Players.LocalPlayer Humanoid = User.Character.Humanoid Torso = User.Character.Torso L_Hip = Torso["Left Hip"] R_Hip = Torso["Right Hip"] function ArcTan(x, y) r = math.atan(y / x) if x < 0 then r = r + math.pi end return r end vel = Vector3.new() while true do wait() if Torso.Velocity.magnitude > 1 then m = (vel - Torso.Velocity).magnitude / Humanoid.WalkSpeed vel = (Torso.Velocity * m + vel * 2) / (m + 2) v = Torso.CFrame:pointToObjectSpace(vel + Torso.Position) L_a = ArcTan(v.x, -v.z) R_a = 3.1416 - ArcTan(v.x, v.z) L_Hip.C1 = CFrame.new(0, 1, 0)*CFrame.Angles(0, R_a, 0) R_Hip.C1 = CFrame.new(0, 1, 0)*CFrame.Angles(0, L_a, 0) L_Hip.C0 = CFrame.new(-0.5, -1, 0)*CFrame.Angles(0, R_a, 0) R_Hip.C0 = CFrame.new(0.5, -1, 0)*CFrame.Angles(0, L_a, 0) L_Hip.MaxVelocity = Torso.Velocity.magnitude / 100 R_Hip.MaxVelocity = Torso.Velocity.magnitude / 100 else L_Hip.C1 = CFrame.new(0, 1, 0)*CFrame.Angles(0, -1.57, 0) R_Hip.C1 = CFrame.new(0, 1, 0)*CFrame.Angles(0, 1.57, 0) L_Hip.C0 = CFrame.new(-0.5, -1, 0)*CFrame.Angles(0, -1.57, 0) R_Hip.C0 = CFrame.new(0.5, -1, 0)*CFrame.Angles(0, 1.57, 0) end end