I got it working, im gonna add some cframe lerping but other than that it works fine scorpions idea to use parts helped because that helped me figure out the rotation, but thanks everyone that responded.
if your want the code here it is:
local camera = workspace.Camera
local player = game:GetService("Players").LocalPlayer
local char = player.Character or player.CharacterAdded:wait()
local runService = game:GetService("RunService")
runService.RenderStepped:connect(function()
local humanoid = char:FindFirstChild("Humanoid")
if humanoid then
local a = false
local x,y,z = camera.CFrame:ToEulerAnglesXYZ()
if game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.A) then
a = true
camera.CFrame = CFrame.new(camera.CFrame.Position) * CFrame.Angles(x,y,z) * CFrame.Angles(0,0,math.rad(2))
end
if game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.D) then
a = true
camera.CFrame = CFrame.new(camera.CFrame.Position) * CFrame.Angles(x,y,z) * CFrame.Angles(0,0,math.rad(-2))
end
if a == false then
camera.CFrame = CFrame.new(camera.CFrame.Position) * CFrame.Angles(x,y,z)
end
end
end)