The following script creates a function that runs before rendering each frame. It then includes making your arms, head, and torso rotate depending on where your cursor is pointing. Let me know if this helps!
local Player = game.Players.LocalPlayer
local Character = Player.Character
if not Character then
Player.CharacterAdded:wait()
Character = Player.Character
end
local Torso = Character:WaitForChild'Torso'
local Neck = Torso:WaitForChild("Neck")
local LeftShoulder = Torso:WaitForChild("Left Shoulder")
local RightShoulder = Torso:WaitForChild("Right Shoulder")
local Humanoid = Character:WaitForChild("Humanoid")
Humanoid.AutoRotate = false
local HMR = Character:WaitForChild("HumanoidRootPart")
local Mouse = Player:GetMouse()
local RC0 = CFrame.new(1, .5, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0)
local RC1 = CFrame.new(-.5, .5, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0)
local LC0 = CFrame.new(-1, .5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
local LC1 = CFrame.new(.5, .5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
local NeckC0 = Neck.C0
local NeckC1 = Neck.C1
game:GetService("RunService").RenderStepped:connect(function()
local cf = workspace.CurrentCamera.CFrame.lookVector.Y
local Kek = CFrame.Angles(0, 0, math.asin(Mouse.Origin.lookVector.Y))
RightShoulder.C1 = RC1 * Kek:inverse()
LeftShoulder.C1 = LC1 * Kek
Neck.C0 = NeckC0 * CFrame.Angles(math.asin(Mouse.Origin.lookVector.Y), 0, 0):inverse()
HMR.CFrame = CFrame.new(HMR.Position, Vector3.new(Mouse.Hit.p.x, HMR.Position.Y, Mouse.Hit.p.z))
end)