Here is the script! local player = game.Players.LocalPlayer local camera = workspace.CurrentCamera local runService = game:GetService("RunService") -- Знаходимо TriggerPart та камери local triggerPart = workspace:WaitForChild("TriggerPart") local cameraPositions = { workspace:WaitForChild("Camera1").CFrame, -- Перша камера workspace:WaitForChild("Camera2").CFrame, -- Друга камера workspace:WaitForChild("Camera3").CFrame, -- Третя камера workspace:WaitForChild("Camera4").CFrame -- Четверта камера } -- Час на кожний перехід local transitionTime = 2 -- Перевірка на повторний запуск катсцени local cutscenePlaying = false -- Функція плавного переходу камери local function moveCamera(targetCFrame, duration) local startCFrame = camera.CFrame local elapsedTime = 0 while elapsedTime < duration do runService.RenderStepped:Wait() elapsedTime = elapsedTime + runService.RenderStepped:Wait() -- Оновлення часу local alpha = math.clamp(elapsedTime / duration, 0, 1) camera.CFrame = startCFrame:Lerp(targetCFrame, alpha) end camera.CFrame = targetCFrame end -- Функція для запуску катсцени local function playCutscene() if cutscenePlaying then return end -- Перевірка, чи вже грається катсцена cutscenePlaying = true -- Зберігаємо початковий тип камери local originalCameraType = camera.CameraType local character = player.Character or player.CharacterAdded:Wait() local humanoidRootPart = character:WaitForChild("HumanoidRootPart") -- Встановлюємо камеру в Scriptable camera.CameraType = Enum.CameraType.Scriptable -- Запуск послідовності камер for _, camPos in ipairs(cameraPositions) do moveCamera(camPos, transitionTime) end -- Повертаємо камеру назад до гравця moveCamera(humanoidRootPart.CFrame * CFrame.new(0, 2, 10), transitionTime) -- Повертаємо камеру в початковий режим camera.CameraType = originalCameraType cutscenePlaying = false end -- Обробник доторкання до TriggerPart triggerPart.Touched:Connect(function(hit) if hit.Parent:FindFirstChild("Humanoid") then local playerCharacter = game.Players:GetPlayerFromCharacter(hit.Parent) if playerCharacter == player then playCutscene() end end end) Follow our Discord Server for more tutorials and free models!
Here is the script! local player = game.Players.LocalPlayer
local camera = workspace.CurrentCamera
local runService = game:GetService("RunService")
-- Знаходимо TriggerPart та камери
local triggerPart = workspace:WaitForChild("TriggerPart")
local cameraPositions = {
workspace:WaitForChild("Camera1").CFrame, -- Перша камера
workspace:WaitForChild("Camera2").CFrame, -- Друга камера
workspace:WaitForChild("Camera3").CFrame, -- Третя камера
workspace:WaitForChild("Camera4").CFrame -- Четверта камера
}
-- Час на кожний перехід
local transitionTime = 2
-- Перевірка на повторний запуск катсцени
local cutscenePlaying = false
-- Функція плавного переходу камери
local function moveCamera(targetCFrame, duration)
local startCFrame = camera.CFrame
local elapsedTime = 0
while elapsedTime < duration do
runService.RenderStepped:Wait()
elapsedTime = elapsedTime + runService.RenderStepped:Wait() -- Оновлення часу
local alpha = math.clamp(elapsedTime / duration, 0, 1)
camera.CFrame = startCFrame:Lerp(targetCFrame, alpha)
end
camera.CFrame = targetCFrame
end
-- Функція для запуску катсцени
local function playCutscene()
if cutscenePlaying then return end -- Перевірка, чи вже грається катсцена
cutscenePlaying = true
-- Зберігаємо початковий тип камери
local originalCameraType = camera.CameraType
local character = player.Character or player.CharacterAdded:Wait()
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
-- Встановлюємо камеру в Scriptable
camera.CameraType = Enum.CameraType.Scriptable
-- Запуск послідовності камер
for _, camPos in ipairs(cameraPositions) do
moveCamera(camPos, transitionTime)
end
-- Повертаємо камеру назад до гравця
moveCamera(humanoidRootPart.CFrame * CFrame.new(0, 2, 10), transitionTime)
-- Повертаємо камеру в початковий режим
camera.CameraType = originalCameraType
cutscenePlaying = false
end
-- Обробник доторкання до TriggerPart
triggerPart.Touched:Connect(function(hit)
if hit.Parent:FindFirstChild("Humanoid") then
local playerCharacter = game.Players:GetPlayerFromCharacter(hit.Parent)
if playerCharacter == player then
playCutscene()
end
end
end)
Follow our Discord Server for more tutorials and free models!