local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local TweenService = game:GetService("TweenService") local Workspace = game:GetService("Workspace") local Player = Players.LocalPlayer local Character = Player.Character or Player.CharacterAdded:Wait() local Camera = Workspace.CurrentCamera local Remotes = ReplicatedStorage.Remotes local EnableCutsceneEvent = Remotes.EnableCutsceneEvent local DisableCutsceneEvent = Remotes.DisableCutsceneEvent local OriginalDistance = nil EnableCutsceneEvent.OnClientEvent:Connect(function(Part: BasePart) if not Part then return end local Head = Character:FindFirstChild("Head") if not Head then return end OriginalDistance = (Camera.CFrame.Position - Head.Position).Magnitude Camera.CameraType = Enum.CameraType.Scriptable TweenService:Create(Camera, TweenInfo.new(1), {CFrame = Part.CFrame}):Play() end) DisableCutsceneEvent.OnClientEvent:Connect(function() local Head = Character:FindFirstChild("Head") if not Head then return end local Direction = (Camera.CFrame.Position - Head.Position).Unit local TargetPosition = Head.Position + Direction * OriginalDistance local TargetCFrame = CFrame.lookAt(TargetPosition, Head.Position) TweenService:Create(Camera, TweenInfo.new(1), {CFrame = TargetCFrame}):Play() task.wait(1) Camera.CameraType = Enum.CameraType.Custom end)