Silnik gier: barwienie i przyciemnianie sceny (pora dnia, zanikanie, błysk)
Silnik gier 2D Moonlight Studio dostał barwę dziedziczoną w dół drzewa sceny. Jednym ustawieniem na węźle-rodzicu zabarwiasz cały jego fragment świata — a to fundament trzech efektów, których gra bez tego nie umiała: pory dnia, zanikania grupy i błysku trafienia.
Barwa, która spływa na dzieci
Każdy węzeł ma barwę (modulate), która mnoży jego piksele i przechodzi na całe poddrzewo. Ustawiasz ją raz na rodzicu, a obejmuje wszystkie dzieci:
mp.set_modulate(swiat, 0.3, 0.3, 0.55, 1) -- cały świat gry robi się wieczorny
Wartości działają jak filtr: poniżej 1 przyciemniają/barwią, a powyżej 1 rozjaśniają — stąd błysk trafienia:
mp.set_modulate(postac, 2, 0.4, 0.4, 1) -- postać (i jej broń, cień) błyska na czerwono
Zanikanie bez dotykania koloru
Do płynnych przejść jest krótka forma zmieniająca samo krycie:
mp.set_modulate_alpha(grupa, 0) -- grupa obiektów znika
mp.set_modulate_alpha(grupa, 1) -- i wraca
A odczyt bieżącej barwy pod animację:
local r, g, b, a = mp.modulate(postac)
HUD zostaje jasny
Efekt „noc" ma przyciemnić świat, ale nie panel punktów. Dlatego barwa sceny nie przenika do warstwy ekranowej — interfejs w niej zaczyna od czystej barwy (i można go zabarwić osobno, jeśli chcesz). Świat robi się granatowy, licznik życia zostaje czytelny.
Detale pod maską
- Mnożenie się kumuluje — dziecko w dwukrotnie przyciemnionej gałęzi jest odpowiednio ciemniejsze; to naturalne dla zagnieżdżonych grup.
- Cząstki też dziedziczą — system cząstek w zabarwionej gałęzi ściemnia się razem z nią.
- Zgaszona gałąź nie kosztuje — poddrzewo o zerowym kryciu nie jest w ogóle rysowane.
- Krycie duszka to osobna oś — obok barwy dziedziczonej duszek ma własne „krycie", które nie spływa na dzieci; jedno i drugie mnoży się niezależnie.
Co dalej
Fundament barwy sceny jest gotowy. W kolejce: barwa liścia „tylko dla siebie" (bez wpływu na dzieci) oraz płynne przejścia pory dnia sterowane osią czasu.