migoczące światła są potężną siłą wpływającą na ton tonu środowisko. Na przykład, dom z oświetleniem stałego jaрkości może poczuć ciepło i zaprosić, ale jeśli dodasz migoczące światła do tego samego strona główna's korytarza, staje się hańbą i może sugerować potencjalne niebezpieczeństwo przed nami. Poprzez strategiczne modelowanie
Podobnie jak w przypadku wszystkich 3D, istnieje wiele sposobów na osiągnięcie dowolnego celu. W tym przewodniku możesz szybko stworzyć animację migotania światła za pomocą narzędzi i metod dostępnych tylko w Studio z użyciem tylko kilku podstawowych zasobów, w tym .rbxm pliku dla modelu lampy bankiera, który mo
W następnym metodzie do tworzenia migocących świateł, postępuj zgodnie z każdą sekcją, aby nauczyć się tworzyć:
- Jasność NumberSequence , aby wpływać na jasność lampy w ciągu czasu.
- Attribut w okresie czasu określa czas trwania każdego migoczącego pętla.
Importowanie próbnej lampy
Ten przewodnik używa dostępnego do pobrania .rbxm pliku modelu bankiera o wysokiej jakości, dostosowalnego modelu lampy, aby pokazać technikę migotania światła. Możesz użyć tego modelu, aby zrozumieć podstawowe zasady, a następnie zastosować je do własnych modeli, które tworzysz w Studio lub innych oprogramowaniach do modelowania stron trzecich.
Aby zaimportować BankersLamp.rbxm :
W oknie Explorer , kliknij Praca . Wyświetlony zostanie menu kontekstowe.
Wybierz Wklej z pliku… Przeglądarkę plików.
Wybierz BankersLamp.rbxm, a następnie kliknij przycisk Otwórz. Model jest wyświetlany w oknie.
Tworzenie liczby sRGB
A NumberSequence jest typem danych, który представia serię wartości liczb od 0 do 1 przez całe życie instancja. Ten typ danych jest użyteczny do tworzenia migotających świateł, ponieważ możesz określić, jak chcesz, aby zmieniła się jasność lampy w ciągu jej życia, a gdy zmienisz jasność z pełnej intensywno
Oś NumberSequence reprezentuje czas, a oś Y reprezentuje relatywne jasność. Każdy kwadrat na początku i końcu NumberSequence reprezentuje wartość właściwości w tym punkcie jasności. Gdy po
Podczas gdy lampy nie mają domyślnie яркоści NumberSequence , możesz utworzyć atrybut яркоści, ustawić go na wpisywaćNumberSequence , a następnie eksperymentować poprzez dodawanie kluczowych punktów z różnymi wartościami, aż światło migota w twoim ustawionym tempie.
Aby utworzyć jasność NumberSequence :
Dodaj nowy atribut NumberSequencji do modelu lampy.
W oknie Explorer wybierz model lampy.
W oknie Właściwości, przejdź do sekcji Attributy i kliknij przycisk Dodaj attrybut. Wyświetlana jest okienko 2>Dodaj attrybut2>.
W dialogu Dodaj atrybut ,
W polu Imię , wpisz Kurwę Jaśności .
Kliknij menu Typ w menu upuszczania, a następnie wybierz Kolejka liczbowa .
Kliknij przycisk Zapisz. Nowy atrybut wyświetlony w sekcji Attributy okna Właściwości.
Wybierz nową wartość Kurva Jaśności , a następnie kliknij przycisk … . Wyświetlana jest liczby sEQUENCJA.
Wykonaj jedną z następujących akcji:
- Aby zmienić jasność w pewnym punkcie, kliknij na punkt i kliknij go w górę lub w dół, lub wpisz wartość w polu Wartość .
- Aby wставиć nowe węzły, kliknij na dowolnym punkcie w grafice.
- Aby usunąć punkt kluczowy, zaznacz punkt kluczowy, a następnie przycisk Usuń .
- Aby dodać losowy zakres jasności, kliknij na dowolnym pasku klawiatury i przeciągnij linie pudełek między różowym pudełkiem. W tym czasie światło generuje losową jasność między różowym pudełkiem.
Na przykład poniższy grafik sprawia, że światło migota do pełnej jasności dla pierwszej migotania, 50% jasności dla drugiej migotania, a następnie 75% jasności dla trzeciej migotania.
Tworzenie trwałości pętli
Teraz, gdy masz NumberSequence do określenia, jak zmienia się jaрkość lampy w ciągu jej życia, musisz określić, jak długo chcesz, aby trwały cykl migotania, w sekundach. Innymi słowy, ta długość cyklu kontroluje w zasadzie, jak często NumberSequence powtarza się.
Aby utworzyć czas trwania pętli:
Dodaj nową funkcję czasu pętli do modelu lampy.
W oknie Explorer wybierz model lampy.
W oknie Właściwości, przejdź do sekcji Attributy i kliknij przycisk Dodaj attrybut. Wyświetlana jest okienko 2>Dodaj attrybut2>.
W dialogu Dodaj atrybut ,
W polu Imię , wpisz Czas_pętli .
Kliknij menu Typ w menu upuszczania, a następnie wybierz Liczba .
Kliknij przycisk Zapisz. Nowy atrybut wyświetlony w sekcji Attributy okna Właściwości.
Ustaw nowy atrybut LoopDuration na 1 . To powoduje, że NumberSequence powtarza się po jednej sekundzie.
Skryptowanie migotania światła
Teraz, gdy masz wszystkie elementy do kontroli jasności swojej lampy przez cały jej żywot, czas stworzyć Script, który będzie wszystko działać razem i migotać światło.
Aby skryptować migotanie światła:
- W oknie Explorer , prześwietl lampę i kliknij przycisk ⊕. Wyświetlony zostanie menu kontekstowe.
- Z menu, wpisz Skrypt .
- W nowym skrypcie wpisz obserwuje:
local RunService = game:GetService("RunService")
-- Zdobywa wartości atrybutów ustawionych na modelu.
local brightnessCurve = script.Parent:GetAttribute("BrightnessCurve")
local loopDuration = script.Parent:GetAttribute("LoopDuration")
-- Przechowuje odniesienia do instancji modelu, które się zmienią.
local light = script.Parent.lamp_hood.SpotLight
local bulb = script.Parent.lightbulb
local beam = script.Parent.lamp_hood.Beam
-- Przechowuje oryginalne wartości właściwości, które się zmienią.
local origLightBrightness = light.Brightness
local origBeamBrightness = beam.Brightness
local origBulbColor = bulb.Color
-- Zdobywa wartość NumberSequencji (ns) w określonym czasie (nsTime)
function evaluateNumberSequence(ns: NumberSequence, nsTime: number)
-- Jeśli jest to 0 lub 1, zwraca wartość pierwszego lub ostatniego punktu dostępu, odpowiednio.
if nsTime == 0 then
return ns.Keypoints[1].Value
end
if nsTime == 1 then
return ns.Keypoints[#ns.Keypoints].Value
end
-- W przeciwnym razie kroki poprzez każdą kolejną pary punktów kluczowych.
for i = 1, #ns.Keypoints - 1 do
-- Zdobądź bieżący i następny punkt dostępu.
local currKp = ns.Keypoints[i]
local nextKp = ns.Keypoints[i + 1]
-- Jeśli nsTime jest pomiędzy czasami kluczowych,
if nsTime >= currKp.Time and nsTime < nextKp.Time then
-- Kalkuluje, gdzie znajduje się nsTime między czasami kluczowych, wzywa to alpha.
local alpha = (nsTime - currKp.Time) / (nextKp.Time - currKp.Time)
-- Zwraca wartość między punktami dla nnTime używając alpha.
return currKp.Value + (nextKp.Value - currKp.Value) * alpha
end
end
end
RunService.Heartbeat:Connect(function()
-- Rozwiązuje problem czasu dla funkcji NumberQueue (pomiędzy 0 i 1).
local t = time() / loopDuration
local numberSequenceTime = t - math.floor(t)
-- Zdobądź wartość NumberSequencji w tym czasie.
local brightnessValue = evaluateNumberSequence(brightnessCurve, numberSequenceTime)
-- Dostosowuje jasność i kolory właściwości na podstawie tej wartości.
light.Brightness = origLightBrightness * brightnessValue
beam.Brightness = origBeamBrightness * brightnessValue
bulb.Color = Color3.new(
origBulbColor.r * brightnessValue,
origBulbColor.g * brightnessValue,
origBulbColor.b * brightnessValue
)
end)
Gdy zagrasz swoją doświadczenie, funkcja Heartbeat wykonuje następujące klatki każdą ramę:
- Rozwiązuje problem za czas ( numberSequenceTime ) w ramach brightnessCurve opartych na bieżącym czasie.
- Czas jest pomiędzy 0 i 1, ponieważ odpowiadają one początku i końca NumberSequencji, odpowiednio.
- Rozwiązuje dla wartości ( brightnessValue ) z brightnessCurve``Datatype.NumberSequence w czasie 1> numberSequencTime1> .
- evaluateNumberSequence() kalkuluje wartość związaną z czasem dowolnej NumberSequence .
- Wartość ta służy jako wartość promieniowania relatywnego do zastosowania do właściwości, które zmieniają się w czasie.
- Zmienia właściwości lamp poprzez mnożenie brightnessValue przez jasność, jasność promienia i kolor żarówki.
Zmiany tych właściwości z czasem prowadzą do migotącego efektu poniżej.