You can try using CFrame:Lerp() for smoother movement.
game:GetService('RunService').RenderStepped:Connect(function()
local XVector,YVector = math.asin(workspace.CurrentCamera.CFrame.LookVector.X),math.asin(workspace.CurrentCamera.CFrame.LookVector.Y)
Gun.Support.Rotate.C0 = Gun.Support.Rotate.C0:Lerp(Offset * CFrame.Angles(0,XVector,-YVector), 0.1)
--You can change the 0.1 at the end to any number from 0 (exclusive) to 1 (inclusive)
--Think of it as a percentage. 0.5 = 50%, 0.25 = 25%, etc.
end)
What if you try welding the gun to the players hand instead? Then animate it’s equipped and unequipped stage’s with twee service while removing and adding the welds.