Dynami c Туман, который плавно исчезает | ROBLOX Studio - PullRequest
0 голосов
/ 26 марта 2020

То, что я пишу или как я пишу, может быть повсеместным и трудным для понимания, но в основном я просто хочу иметь плавно переходящий сценарий тумана, который будет переходить за время, заданное от значения A до значение B. Например, если значение A RGB-кода равно «255,255,255», а значение B равно «0,0,0» (от белого к черному, пропуская фазу заката на данный момент), оно будет принимать наибольшее значение и вычитать наименьшее значение (255-0) для каждого символа RGB. Затем он вычислит, сколько игрового времени осталось (в минутах) с момента, когда было установлено значение A, и когда должно быть установлено значение B, а также вычислит, насколько большим должно быть целое число, которое цвет тумана меняется с каждой минутой, чтобы достичь его цель 0,0,0 в (например) 10 игровых часов (о продолжительности дневного времени, округленная для упрощения математики на данный момент).

Таким образом, он должен go 255 значений до добраться до 0, и у него есть 10 часов или около 600 минут. Таким образом, он разделил бы 255 на 600, означая, что он будет go уменьшен на 0,425 r, g, b каждую минуту (это будет через некоторое время верно, если l oop или et c. Если это невозможно по какой-либо причине), и так должно быть по значению 0,0,0 из 255,255,255 за 600 минут.

Я надеюсь, что Вы понимаете, что я имею в виду под этим, и надеюсь, что Вы можете мне помочь, так как я довольно хорошо разбираюсь в базовых сценариях c r Lua, но когда это входит во все эти (возможно) функции используя и все, вот когда я заблудился. Вот мой текущий скрипт, я полагаю, что цветовая функция должна быть сохранена, поскольку она значительно облегчает изменение цвета тумана, но если кто-то знает лучше, вы можете внести любые изменения:

local GL=game.Lighting
local GT=math.floor(game.Lighting.ClockTime)

function Color(r, g, b)
    return Color3.new(r/255, g/255, b/255)
end

local B=Color(0,0,0)
local LB=Color(51,51,51)
local R=Color(71,51,51)
local DO=Color(115,46,0)
local LO=Color(230,92,0)
local P=Color(91,71,71)
local G=Color(192,192,192)
local W=Color(255,255,255)

local FogStartH=80
local FogEndH=340
local FogStartM=160
local FogEndM=650
local FogStartL=230
local FogEndL=900

while true do
GT=math.floor(game.Lighting.ClockTime)
    if 0<=(GT) and (GT)<5 then
        game.Lighting.FogColor=B
        game.Lighting.FogStart=FogStartH
        game.Lighting.FogEnd=FogEndH
        wait(0.01)
    elseif 5<=(GT) and (GT)<7 then
        game.Lighting.FogColor=DO
        game.Lighting.FogStart=FogStartM
        game.Lighting.FogEnd=FogEndM
        wait(0.01)
    elseif 7<=(GT) and (GT)<16.5 then
        game.Lighting.FogColor=W
        game.Lighting.FogStart=FogStartL
        game.Lighting.FogEnd=FogEndL
        wait(0.01)
    elseif 16.5<=(GT) and (GT)<17.5 then
        game.Lighting.FogColor=LO
        game.Lighting.FogStart=FogStartM
        game.Lighting.FogEnd=FogEndM
        wait(0.01)
    elseif 17.5<=(GT) and (GT)<24 then
        game.Lighting.FogColor=B
        game.Lighting.FogStart=FogStartH
        game.Lighting.FogEnd=FogEndH
        wait(0.01)
    end 
end
...