Make an event for the cutscene, for it to only run once, for example if the user joins, they have a local script in their startergui, or starterplayer scripts, and it plays the camera tween, or camera interpolation ( whatever you wanted to use ) and then it only runs once, so you don’t do a while () event, if you’d like an example let me know. You’d need some blocks in the map, and you’d name them to what you want, and your camera would move to that.
Edit;
Not sure if you’re doing it when the player joins, or like a cutscene while a script is happening, but this will work for any case, just paste it in your script ( has to be local ) or use it. I’ll show an example of both.
In a script;
local camera = game.Workspace.CurrentCamera
local Player = game.Players.LocalPlayer
function cutscene()
camera.CameraType = "Scriptable"
camera.CFrame = game.Workspace.CamPart.CFrame
camera:Interpolate(game.Workspace.CamPart.CFrame, game.Workspace.CamPart2.CFrame, 2)
wait(3)
camera:Interpolate(game.Workspace.CamPart2.CFrame, game.Workspace.CamPart3.CFrame, 2)
wait(3)
camera.CameraType = "Custom"
end
--your code
cutscene()
In this example, we are using the function, and making it so the camera moves to 3 parts. Lets deconstruct it;
We have 3 parts, named CamPart and then the number.
In the code, we are interpolating the players camera
camera:Interpolate(game.Workspace.CamPart.CFrame, game.Workspace.CamPart2.CFrame, 2)
We are interpolating it from the campart you start with to the Campart2,
(game.Workspace.CamPart.CFrame, game.Workspace.CamPart2.CFrame, 2)
The number at the end “2” is actually the time it takes, so in the wait(3) events, you can change it. In this case, it takes 2 seconds for CamPart to interpolate to CamPart2.
here is what it would look like in a startergui;
local camera = game.Workspace.CurrentCamera
local Player = game.Players.LocalPlayer
camera.CameraType = "Scriptable"
camera.CFrame = game.Workspace.CamPart.CFrame
camera:Interpolate(game.Workspace.CamPart.CFrame, game.Workspace.CamPart2.CFrame, 2)
wait(3)
camera:Interpolate(game.Workspace.CamPart2.CFrame, game.Workspace.CamPart3.CFrame, 2)
wait(3)
camera.CameraType = "Custom"
Let me know if this worked! Hope I could help.