I tested it and I think I understand the issue, check this post out along with other posts in the topic:
I got the same issue of the camera position stuttering when moving and shooting at the same time:
local Camera = game.Workspace.CurrentCamera
local TweenService = game:GetService("TweenService")
local userInputService = game:GetService("UserInputService")
local function Fire()
Camera.CFrame = Camera.CFrame * CFrame.Angles(math.rad(5),0,0)
local tweenInfo = TweenInfo.new(0.2)
local goal = {CFrame = Camera.CFrame * CFrame.Angles(math.rad(-5),0,0)}
local RecoilRecover = TweenService:Create(Camera, tweenInfo, goal)
RecoilRecover:Play()
end
userInputService.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
print("The left mouse button has been pressed!")
Fire()
end
end)
Anyways, TweenService isn’t great in this case it seems. Lerping or using RunService might work or the stuff other people said in other topics.