CFrame rotation system not working as intended

Hey all, I’m trying to make a broadcasting camera system controlled by a player using WASD. And, after a lot of trial and error, I made the system work so that when I press W the camera rotates .5 degrees in the Z axis (so .5 degrees up), but when I press W again it would rotate another .5 degrees.

Local Script

local Player = game:GetService("Players").LocalPlayer
game:GetService("ReplicatedStorage").CameraOccupantChanged.OnClientEvent:Connect(function(CamID)
	print("WORKS! Camera ID is "..CamID)
	local Camera = game.Workspace.CurrentCamera
	Camera.CameraSubject = game:GetService("Workspace").CameraSystem:FindFirstChild("Camera"..CamID).CamModel.ZoomPart
	Camera.Focus = game:GetService("Workspace").CameraSystem:FindFirstChild("Camera"..CamID).CamModel.ZoomPart.CFrame
	Camera.CFrame = game:GetService("Workspace").CameraSystem:FindFirstChild("Camera"..CamID).CamModel.CamPart.CFrame
	Camera.CameraType = Enum.CameraType.Scriptable
	game:GetService("UserInputService").InputBegan:Connect(function(input, processed)
		if input.KeyCode == Enum.KeyCode.W then
			print("W")
			print(game:GetService("Workspace").CameraSystem:FindFirstChild("Camera"..CamID).CamModel.CFrame.Rotation)
			
			local V3 = Vector3.new(game:GetService("Workspace").CameraSystem:FindFirstChild("Camera"..CamID).CamModel.CFrame.Rotation.X, game:GetService("Workspace").CameraSystem:FindFirstChild("Camera"..CamID).CamModel.CFrame.Rotation.Y, game:GetService("Workspace").CameraSystem:FindFirstChild("Camera"..CamID).CamModel.CFrame.Rotation.Z + 0.5)
			game:GetService("ReplicatedStorage").CameraMovementInput:FireServer(V3)
		end
	end)
end)

Part Script

script.Parent:GetPropertyChangedSignal("Occupant"):Connect(function()
	if script.Parent.Occupant ~= nil then
		local Player = game:GetService("Players"):GetPlayerFromCharacter(script.Parent.Occupant.Parent)
		local CamID = script.Parent.Parent.Parent:GetAttribute("CamID")
		game:GetService("ReplicatedStorage").CameraOccupantChanged:FireClient(Player, CamID)
	end
end)

game:GetService("ReplicatedStorage").CameraMovementInput.OnServerEvent:Connect(function(Player, Vec3)
	script.Parent.Parent.Parent.CamModel.Rotation = Vec3
end)

Does anyone know how to fix it?

Maybe use an if statement to check if it’s already rotated .5 degrees