My problem is that during the rotation animation the camera moves forward somewhere from the initial position.

local initialCameraPosition=camera.CFrame.Position
local initialCameraOrientation=camera.CFrame-initialCameraPosition
runService.RenderStepped:Connect(function()
local time=(tick()-startTime)*speed
local offsetX=math.sin(time)*radius
local angleY=math.sin(time)*maxAngle
local newPosition=initialCameraPosition+Vector3.new(offsetX,0,0)
local newOrientation=initialCameraOrientation*CFrame.Angles(0,angleY,0)
camera.CFrame=CFrame.new(newPosition)*newOrientation
--camera.CFrame=newOrientation+(newPosition-newOrientation.Position)
end)

Unfortunately it didn’t work. I believe the problem is in the line: camera.CFrame = CFrame.new(newPosition)*newOrientation, but I don’t understand exactly where.

I can’t think of anything else at the moment but if I think of a solution (and actually test it) I’ll make sure to post it here if it’s still not solved!