LifeLike – Światło

W chwili, gdy czytacie ten post, ja podróżuję po Islandii, polując na zorze polarną. W grze także zapolujmy trochę na światło, aby dodać jej trochę uroku, a nawet i mroku.

Postać

Zanim to jednak nastąpi, pozwolę sobie wrócić do postaci. Mam ku temu 2 powody:
* Obrót postaci w zależności od wciśniętego klawisza
* Oświetlenie postaci
Po stronie edytora dodałem możliwość wybrania pomiędzy Input.GetButtownDown a AxisRaw . Domyślnie ustawiona jest opcja 1. ze względu na łatwiejsze poruszanie – co kratkę. Będzie to przydatne w przypadku wprowadzenia w późniejszej fazie systemu tur.

Obrót

Przyznam, że początkowo miałem ten wpis ograniczyć tylko do tego zagadnienia, ale jak się za chwilę przekonacie rzeczywistość okazała się być inna, a to wszystko przez to, że przysiadłem troszkę dłużej przy kwestii oświetlenia/światła, które różni się w Unity2d w stosunku do 3d. Ale o tym będzie później, a teraz wróćmy do głównego gościa tego paragrafu, czyli obrotu. 🙂
Obrót postacią odbywa się za pomocą metody:

   if (Input.GetKeyDown(GameManager.Instance.KeyLeft))
      transform.eulerAngles=new Vector3(0,0,90); 

Wartość kąta zależy od tego, w którą stronę chcemy się obrócić, tutaj mamy przypadek dla skrętu w lewo.

Wartość kąta podajemy dla osi Z, gdyż to wokół niej obraca się postać. Wartości dla osi X i Y pozostają zerowe, gdyż w przypadku gier 2D (płaskich), obrót postaci wokół tych osi pokazałby jak bardzo nasza postać jest płaska (no offence).

Materiał światłoczuły

Przyznam, że temat który mnie długo zastanawiał, był efektem prób i błędów.
Koniec końców, rozwiązanie jest całkiem łatwe: na nasze grafiki trzeba nałożyć shader typu sprite -> diffuse.

 

Następnie przeciągamy go do np. prefab z podłogą i nasza podłoga jest tym sposobem podatna już na warunki świetlne. Możemy ustalić teraz światło globalne, a także w narożnikach, czy jak w moim przypadku przy postaci. Kolor światła, intensywność i wszystko zależy od wyobraźni autora 🙂 Ja osobiście ustawiłem światło typu point.

ŚWIATŁO! KAMERA! AKCJA!

Kolejny etap, to odpowiednie “przyćmienie” naszego pomieszczenia. Aby uzyskać efekt, jak na poniższym screenie – takiej ciemności, mamy do wyboru 2 sposoby:
* W edytorze Unity można rozwiązać to za pomocą okna lighting, którego można wywołać z menu Górnego:
Unity3d -> Window -> Lighting -> Ambient Color ( u mnie jest czarny na noc i biały na dzień)
* Drugi sposób to przy pomocy kodu – jednej linijki:
RenderSettings.ambientLight = Color.black; (lub white, lub dowolny inny kolor)
(screen)
Tak oto stworzony został łatwy system dnia i nocy w klasię FollowPlayer i metodzie LateUpdate. Nazwa klasy będzie zmieniona przy następnym refactoringu.
W GameManager do Klawisza F przypisałem zmianę zmiennej “isDay”. W klasie FollowPlayer, w zależności od wartości isDay, ustawia ambientlight color i tło na zewnątrz (skybox dla kamery), aby dodatkowo, także poza obszarem mapy, zmieniało się otoczenie z dnia na noc lub odwrotnie.
W przypadku gracza, stworzyłem gameobject typu Light i skrypt, który także sprawdza IsDay z GameManagera i odpowiednio uruchamia lub gasi światło.

Podsumowanie

To tyle na dzisiaj. Następny wpis będzie dostępny za tydzień, więc spokojnie, nie będziecie zaniedbani. W międzyczasie, zapraszam do testów na 2. Demo Technologiczne
Miłej zabawy ! 🙂

Światło
Światło!
Światło
Kliknij F aby przelaczyć na dzien/noc

 

Bonus:

światło

Ostatnie wpisy

Reklama

Szymon Motyka Opublikowane przez:

70-532   300-208   400-101   JN0-102   CISSP  , 1Z0-051   700-501   352-001   1Z0-804   300-206   400-101   000-017  , C_TFIN52_66   70-534   MB2-704   c2010-657   EX200   642-999   ITILFND  , 1z0-434   70-417  , 70-488  , SY0-401  , 2V0-620   CCA-500  , SSCP   000-017  , 400-051   200-310  , 2V0-621D   220-902   400-201  , 1Z0-804   70-417   1z0-808   SSCP  , 70-410   70-417   SY0-401   100-105  , 300-070  , EX200   70-488   000-105   1V0-601  , 1Z0-061   74-678   642-999  , C_TFIN52_66   70-461   70-410   ADM-201   000-106   300-320   000-105   1z0-434   N10-006   350-018   1Z0-051   JN0-360   70-461   70-417   70-270   9L0-066   MB2-707   300-075   70-413  , 000-105  , 640-911   CCA-500   101-400   1Z0-804   70-347   101   100-105  , 642-732   640-692   70-346  , PMP  , 300-208   300-115  , SSCP   700-501   100-101  , MB5-705