So, I’ve been trying to fix this issue with “Head and torso follows camera but not in first-person”, but it’s just so hard since there are not many questions similar to mine.
The script:
repeat wait() until script.Parent
local char = script.Parent
local mouse = game.Players.LocalPlayer:GetMouse()
game["Run Service"].RenderStepped:Connect(function()
local rightshoulder = char.Torso["Right Shoulder"]
local rightshoulderpos = CFrame.new(1, 0.5, 0) * CFrame.Angles(-math.asin((char["Right Arm"].CFrame.Position - workspace.CurrentCamera.CFrame.Position).Unit.Y), 1.55, 0)
local leftshoulder = char.Torso["Left Shoulder"]
local leftshoulderpos = CFrame.new(-1, 0.5, 0) * CFrame.Angles(-math.asin((char["Left Arm"].CFrame.Position - workspace.CurrentCamera.CFrame.Position).Unit.Y), -1.55, 0)
local neck = char.Torso.Neck
local neckpos = CFrame.new(0, 1, 0) * CFrame.Angles(-math.asin((char.Head.CFrame.Position - workspace.CurrentCamera.CFrame.Position).Unit.Y) + 1.55, 3.15, 0)
rightshoulder.C0 = rightshoulderpos
leftshoulder.C0 = leftshoulderpos
neck.C0 = neckpos
end)