✓ Accepted answer
The issue is that if the camera is perfectly vertical, the program controlling character motion can't figure out what direction to align character movement to, since there's no useful lookvector for the camera. To avoid that, ROBLOX prevented the camera from going above/below a certain angle.
To get around it, you could always use the Scriptable CameraType, and re-implement character motion and camera follow yourself.
edit: example follows
This script is intended to be placed in StarterPlayerScripts and named CameraScript. It doesn't solve the issue of character control.
local HEIGHT = 30
local ANGLE = -90
local ROTATION = 0
local player = game.Players.LocalPlayer;
local runservice = game:GetService("RunService");
local function CameraUpdate()
local character = player.Character;
if (not character) then return; end
local root = character:FindFirstChild("HumanoidRootPart");
if (not root) then return; end
local camera = workspace.CurrentCamera;
camera.CoordinateFrame = CFrame.new(root.Position) * CFrame.Angles(0, math.rad(ROTATION), 0) * CFrame.Angles(math.rad(ANGLE), 0, 0) * CFrame.new(0, 0, HEIGHT);
end
runservice:BindToRenderStep("VertCamera", Enum.RenderPriority.Camera.Value, CameraUpdate);
2 comments
If the CameraType is set to Scriptable, then both Focus and CameraSubject will not work. You will have to set the Camera's CoordinateFrame yourself manually.
the type is custom, and camera subject works