Top.Mail.Ru
Ответы

Как сделать день и ночь в роблокс студио по таймингам?

Всем привет, мне нужна помощь, помогите написать скрипт на день и ночь, я хочу чтоб ночь в игре длилась 10 минут, а потом плавно но быстро наступал день и длился 3 минуты, зачем быстро и плавно наступала ночь и так всё по новой.

По дате
По рейтингу
Аватар пользователя
Новичок
9мес

lua
local Lighting = game:GetService("Lighting")

local dayLength = 180 -- Длительность дня в секундах (3 минуты)
local nightLength = 600 -- Длительность ночи в секундах (10 минут)
local transitionTime = 30 -- Время перехода между днем и ночью

local function setDay()
Lighting.TimeOfDay = "14:00:00" -- Устанавливаем день
Lighting.Brightness = 2 -- Яркость
end

local function setNight()
Lighting.TimeOfDay = "00:00:00" -- Устанавливаем ночь
Lighting.Brightness = 0.5 -- Темнота
end

local function transition(toDay)
local startTime = tick() -- Время начала перехода
local startBrightness = Lighting.Brightness

for i = 0, transitionTime, 1 do
wait(1)
local alpha = i / transitionTime
Lighting.Brightness = startBrightness * (1 - alpha) + (toDay and 2 or 0.5) * alpha
end
end

while true do
setDay()
wait(dayLength)
transition(false)
setNight()
wait(nightLength)
transition(true)
end


Этот скрипт будет постоянно переключать время суток между днем и ночью. Поместите его в `ServerScriptService`, и он будет работать в вашем игровом мире. Вы можете настроить длительность дня, ночи и время перехода по своему усмотрению.

Аватар пользователя
Просветленный
9мес
123456789101112131415161718192021222324252627282930
 -- Настройки 
local Lighting = game:GetService("Lighting") 
local dayDuration = 3 * 60 -- Продолжительность дня в секундах (3 минуты) 
local nightDuration = 10 * 60 -- Продолжительность ночи в секундах (10 минут) 
local transitionTime = 10 -- Время на плавный переход в секундах 
 
-- Функция для плавного изменения времени суток 
local function lerpTimeOfDay(start, finish, duration) 
    local startTime = tick() 
    while tick() - startTime < duration do 
        local elapsed = tick() - startTime 
        local progress = elapsed / duration 
        local currentTime = start + (finish - start) * progress 
        Lighting.ClockTime = currentTime 
        wait(0.1) -- Плавное обновление 
    end 
    Lighting.ClockTime = finish -- Обновляем на конечное значение 
end 
 
-- Главный цикл дня и ночи 
while true do 
    -- Ночь (от 18:00 до 6:00) 
    lerpTimeOfDay(18, 6, transitionTime) 
    wait(nightDuration) 
 
    -- День (от 6:00 до 18:00) 
    lerpTimeOfDay(6, 18, transitionTime) 
    wait(dayDuration) 
end 
 
Аватар пользователя
Ученик
3мес

не работает

Аватар пользователя
Ученик
4мес

local dayDuration = 3 * 60 -- 3 минуты
local nightDuration = 10 * 60 -- 10 минут
local transitionTime = 30 -- время перехода (в секундах)

-- Функция для плавного изменения времени
local function transitionTimeOfDay(targetTime)
local startTime = game.Lighting .ClockTime
local elapsedTime = 0

while elapsedTime < transitionTime do
elapsedTime = elapsedTime + wait(1)
local alpha = elapsedTime / transitionTime -- Пропорция времени
game.Lighting .ClockTime = startTime + (targetTime - startTime) * alpha
end

game.Lighting .ClockTime = targetTime -- Устанавливаем конечное время
end

while true do
-- Ночь
transitionTimeOfDay(0) -- Устанавливаем ночь (0:00)
wait(nightDuration)

-- Переход в день
transitionTimeOfDay(12) -- Устанавливаем день (12:00)

-- День
wait(dayDuration)

-- Переход в ночь
transitionTimeOfDay(0) -- Возвращаемся к ночи (0:00)
end

все

Аватар пользователя
Мудрец
9мес
1234567891011121314151617181920212223242526272829303132
 local dayDuration = 3 * 60 -- 3 минуты 
local nightDuration = 10 * 60 -- 10 минут 
local transitionTime = 30 -- время перехода (в секундах) 
 
-- Функция для плавного изменения времени 
local function transitionTimeOfDay(targetTime) 
    local startTime = game.Lighting.ClockTime 
    local elapsedTime = 0 
 
    while elapsedTime < transitionTime do 
        elapsedTime = elapsedTime + wait(1) 
        local alpha = elapsedTime / transitionTime -- Пропорция времени 
        game.Lighting.ClockTime = startTime + (targetTime - startTime) * alpha 
    end 
 
    game.Lighting.ClockTime = targetTime -- Устанавливаем конечное время 
end 
 
while true do 
    -- Ночь 
    transitionTimeOfDay(0) -- Устанавливаем ночь (0:00) 
    wait(nightDuration) 
 
    -- Переход в день 
    transitionTimeOfDay(12) -- Устанавливаем день (12:00) 
 
    -- День 
    wait(dayDuration) 
     
    -- Переход в ночь 
    transitionTimeOfDay(0) -- Возвращаемся к ночи (0:00) 
end