I made a simple, 15-line script that lets your character's head and UpperTorso follow their mouse. The problem is, whenever I turn the camera to face an X angle (left and right), it glitches. Put the script below in a localscript in startergui and see for yourself. It works perfect when I face a Z angle (forward and behind). Does anyone know what I'm doing wrong and how to fix it?
local Player = game.Players.LocalPlayer local Character = Player.Character or Player.CharacterAdded:wait() ; Character = Player.Character local Torso = Character:WaitForChild("UpperTorso") local Neck = Character:WaitForChild("Head"):WaitForChild("Neck") local Up = Character:WaitForChild("UpperTorso"):WaitForChild("Waist") local Humanoid = Character:WaitForChild("Humanoid") local Mouse = Player:GetMouse() local NeckC0 = Neck.C0 local NeckC1 = Neck.C1 Mouse.Move:connect(function() Neck.C0 = NeckC0 * CFrame.Angles(math.asin(Mouse.Origin.lookVector.Y), 0, 0) Up.C0 = (NeckC0 - Vector3.new(0,0.3,0)) * CFrame.Angles(math.asin((Mouse.Origin.lookVector.Y)), math.sin(Mouse.Origin.lookVector.X/math.sin(workspace.CurrentCamera.CFrame:inverse().lookVector.Y * -1)/7) , 0) end)