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

image
image
image

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”