Aethera
Bohaterka
 
Pojedynki: być może
Pomogła: 7 razy Posty: 382
10120 Prestiż
|
Wysłany: 20-07-2008, 15:44 [MMF2] Aktywne światło
|
|
|
Co zrobić jeżeli nie chcemy by gracz wiedział co jest w pomieszczeniu obok dopóki się tam
niedostanie? Obiekty aktywne możemy ukryć ale tła... Duże obiekty aktywne odpadają, obciążają za bardzo grę. Ale jest coś co możemy śmiało wykorzystać.
Background System Box. Do dzieła!
1. Przygotowujemy pokój.
Zmieniamy podłogę tak by ani jeden jej piksel nie był pod innymi obiektami tła. To
pewna niedogodność.
Ustawiamy wszystkim obiektom tła Ink Effect na AND
Tworzymy nowy Background System Box, ustalamy jego rozmiary na rozmiary pokoju.
Edytujemy BSB, Fill Color ustawiamy na czarny(#000000), Border Color#1 i #2 na None
Przestawiamy go poniżej obiektów tła w pokoju (Order->To Back)
Jak da się zauważyć czarne tło mimo że jest pod spodem, wyciemnia cały pokój.
2. Wprowadzamy interakcję.
Załóżmy że WARUNEK#1 to warunek po którym światło zostaje oświetlone, a
WARUNEK#2 to warunek przy którym światło zostaje zgaszone.
Załóżmy też że jedynym obiektem aktywnym jest Klucz, a Background System Box nazwaliśmy Pokoj1.
Kod: | Start of Frame-> Pokoj1: Set Fill Color to GetRGB(0, 0, 0)
->Klucz: Set ink effect to Semi-transparent (128%) |
Powyższe zdarzenie wyciemnia pokój na początku poziomu i ukrywa klucz. GetRGB(x, y, z) to funkcja generująca kod koloru, gdzie x oznacza nasycenie czerwieni, y zieleni,a z niebieskiego koloru.
Kod: | WARUNEK#1 + Only one action when event loops -> Pokoj1: Set Fill Color to GetRGB(255, 255, 255)
->Klucz: Set ink effect to Semi-transparent (0%) |
Powyższe zdarzenia natomiast przywracają światło w pokoju i ukazują klucz.
Kod: | WARUNEK#2 + Only one action when event loops-> Pokoj1: Set Fill Color to GetRGB(0, 0, 0)
->Klucz: Set ink effect to Semi-transparent (128%) |
A podczas tego zdarzenia powracają ciemności.
3. Końcowe uwagi.
Jeden pokój nie obciąża gry, ale nie sprawdzałam na większej ilości.
Zaawansowany użytkownik poradzi sobie na pewno z płynnym przejściem z ciemności do jasności i odwrotnie (podpowiem że zamiast x y z w GetRGB(x, y, z) wystarczy wstawić odnośnik do liczników które można dynamicznie zmieniać.
Nic nie stoi na przeszkodzie by zamiast pełnego światła ( GetRGB(255, 255, 255) )było na przykład światło czerwone ( GetRGB(255, 50, 50) ).
To na tyle! |
_________________ Aka : Wolf / Crazy / Natie / Fallen Angel / Alicja / Mrs Evil |
|