As a developer, observing small details with the camera is difficult because the camera can be sent flying after holding shift.
The camera in Studio has two speeds: Camera Speed and Camera Shift Speed. When moving the camera normally, the camera’s speed starts at Camera Speed and increases linearly over time. Here is some crudely collected data to show this.
Suppose I hold shift to move at Camera Shift Speed. When I release shift, the camera still moves at the accelerated speed. This is unexpected, as I go from moving very slow to very fast.
In this third example, I press shift a few seconds after starting to move.
Once again, the accelerated speed is resumed after releasing shift. And to really drive the point home, you can watch me do it.
What I expect to happen in all of these examples after releasing shift is for the camera to move again at the original Camera Speed. It should not move at the accelerated Camera Speed. Something like this.
I expect this because changing speeds from Camera Shift Speed to the accelerated Camera Speed is jarring. I am most likely holding shift to look at a small detail. After releasing shift, I do not want to be sent flying away and lose my place.
EDIT
It was requested I include my methodology for collecting the data. Here’s the code, it’s a simple distance / time. I saved it to a file and ran it using Run Script. Then I pasted the output into Excel and graphed it. I suspect the exact measurements are wrong but the general shape of the data is correct.
local RunService = game:GetService("RunService")
local t = tick()
local lastP = workspace.CurrentCamera.CFrame.Position
local lastT = tick()
while tick() - t < 20 do
local nowP = workspace.CurrentCamera.CFrame.Position
local nowT = tick()
print(string.format("%s\t%s", tostring(nowT - t), tostring((nowP - lastP).Magnitude / (nowT - lastT))))
lastP = nowP
lastT = nowT
RunService.Heartbeat:Wait()
RunService.Heartbeat:Wait()
end