How to make arms follow mouse like this

I have my own script to make arm follows the mouse kinda, but I use a custom animating method aka head stacks method I forgot the post anyway so my problem, pay attention to the gun

as you can see it doesn’t stay in the hands correctly, which is truly depressing
my code

--// Variables

local Player = game.Players.LocalPlayer

local Mouse = Player:GetMouse()
local Camera = workspace.CurrentCamera

local Character = script.Parent

local Head:Part = Character:WaitForChild("Head")
local Humanoid:Humanoid = Character:WaitForChild("Humanoid")
local Root:Part = Character:WaitForChild("HumanoidRootPart")


local CameraEnabled = true


--// Script

local function UpdateMotor(Motor:string, NewC0:CFrame)
	for _,v in Character:GetDescendants() do
		if v:IsA("Motor6D") and v.Name==Motor then
			if not v:FindFirstChild("OriginC0") then
				local oc = Instance.new("CFrameValue")
				oc.Value = v.C0
				oc.Name = "OriginC0"
				oc.Parent = v
				local oc = Instance.new("CFrameValue")
				oc.Value = v.C0
				oc.Name = "OriginTM"
				oc.Parent = v
				local oc = Instance.new("NumberValue")
				oc.Value = v.CurrentAngle
				oc.Name = "OriginCA"
				oc.Parent = v
			end
			if Head.LocalTransparencyModifier~=2 then
				v.C0 = NewC0
			else
				v.C0 = v.OriginC0.Value
			end
		end
	end
end

game:GetService("RunService").RenderStepped:Connect(function()

	if Character and CameraEnabled then
		if Humanoid.Health>0 then
			local x0, y0, z0 = CFrame.lookAt(Camera.CFrame.Position, Mouse.Hit.Position):ToOrientation()
			
			UpdateMotor("Right Shoulder", CFrame.new(1, .5, 0)*CFrame.fromEulerAnglesXYZ(x0, math.rad(90), 0))
			UpdateMotor("Left Shoulder", CFrame.new(-1, .5, 0)*CFrame.fromEulerAnglesXYZ(x0, math.rad(-90), 0))
			
			UpdateMotor("BodyAttach", CFrame.new(0, 0, 0)*CFrame.fromEulerAnglesXYZ(x0, 0, 0))
			
			
		end
	end

end)

it’s the line that edits the bodyattach that is the “problem”