I wanted to make a camera animation, but I decided to take a more "unorthodox" method to say the least. Instead of using TweenService to animate the camera itself, I decided to animate a Humanoid's torso using Moon Animator because it would be easier for me to control the timing of the camera and I wouldn't have to worry about making +20 Tweens with different timing, after exporting the animation I would insert a LocalScript inside StarterPlayerScripts that would update the CFrame of the camera accordingly to the CFrame to the torso, this is the script I came up with:
local RunService = game:GetService("RunService")
workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable
local function onRenderStepUpdate(deltaTime)
local Humanoid = workspace:WaitForChild("Humanoid")
local Torso = Humanoid.Torso
local ToPosition = Torso.CFrame.Position
local ToOrientation = Torso.CFrame.LookVector
local CamPosition = workspace.CurrentCamera.CFrame.Position
local CamOrientation = workspace.CurrentCamera.CFrame.LookVector
CamPosition = Vector3.new(ToPosition.X, ToPosition.Y, ToPosition.Z)
CamOrientation = Vector3.new(ToOrientation.X, ToOrientation.Y, ToOrientation.Z)
print("Camera Update")
end
RunService.RenderStepped:Connect(onRenderStepUpdate) -- I used RenderStepped since camera manipulation displays immediate feedback to the player.
The script doesn't work and there are no errors in the output, it prints "Camera Update" but doesn't actually move the camera in any way, the player is still able to move the camera as if the CameraType was "Custom" and not "Scriptable".
I know it is a cheap way of animating the camera but that's more comfortable to me and it allows me to have more control on the animation, I honestly don't know what's the issue here but if you do please let me know.

2 comments
Like a cutscene?
No, it would be more like an In-Game loop