I’ve never played UFC so I don’t know if it’s coincidental but in that clip it seems like the camera is locked to an arc about the cage. I’m guessing the player controls it left/right. Could you do the same? Lock it on a radius from the center of the ring, and have it face that point center of the two players?
Here’s an example I wrote and tested out, I got movement similar to that clip. I assumed A/D controls and the ring has a radius of 10 studs.
local cam = workspace.CurrentCamera
local UIS = game:GetService("UserInputService")
local TS = game:GetService("TweenService")
cam.CameraType = Enum.CameraType.Scriptable
cam.CFrame = CFrame.new(Vector3.new(0, 4, 10), Vector3.new(0, 4, 0))
local rotation = 0
local offset = Vector3.new(0, 4, 10) --the offset the camera is from the center
local turnSpeed = 1/8 --how quickly to turn
local angleInterval = 5 --how far to turn every turnSpeed, the larger the number, the less circular the movement will look
local info = TweenInfo.new(turnSpeed, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut)
UIS.InputBegan:connect(function(input)
--cam.CameraType = Enum.CameraType.Scriptable
if (input.UserInputType ~= Enum.UserInputType.Keyboard) or ((input.KeyCode ~= Enum.KeyCode.A) and (input.KeyCode ~= Enum.KeyCode.D)) then return end
--print(string.format("Going %s", input.KeyCode == Enum.KeyCode.A and "Left" or "Right"))
repeat
rotation = math.clamp(rotation + (input.KeyCode == Enum.KeyCode.A and -angleInterval or angleInterval), -90, 90)
local target = CFrame.new(0, 4, 0) * CFrame.Angles(0, math.rad(rotation), 0) --you would want to change this CFrame.new to your mid position
TS:Create(cam, info, {CFrame = target:ToWorldSpace(CFrame.new(offset))}):Play()
task.wait(turnSpeed)
until (not UIS:IsKeyDown(input.KeyCode)) or math.abs(rotation)==90 --quit if key is released *or* the max is hit
end)
You would be changing the CFrame it’s focusing on, where I did CFrame.new(0, 4, 0), to where the center of the two people is at