Autor Wątek: Wyszarzenie sceny w unity  (Przeczytany 815 razy)

Offline jjoker8

  • Użytkownik

# Marzec 06, 2019, 04:50:54
Hej, chciałbym zrobic taki efekt żeby scena po śmierci bohatera sie wyszarzyła i na to wyskakuje okienko z canvasa, tzn. nie chcę zasłaniać sceny jakimś szarym bilboardem, ani animować koloru każdego obiektu z osobna. Macie może pomysł jak to zrobić? Gra 2d na androida. Szukałem w dokumentacji czy nie ma jakiejś opcji manipulacji kolorami w metodach camery ale nie znalazłem.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Boski

  • Użytkownik

  • +1
# Marzec 06, 2019, 09:42:21
Hej, można zrobić to tak:
- tworzysz RenderTexture
- wpinasz RT do kamery (Target texture)
- tworzysz na ui RawImage, rozciągnięty na całość, i wpinasz mu tą samą RT
- do RawImage przypisujesz nowy materiał, a jemu shader, który wyszarza

Offline matheavyk

  • Użytkownik
    • rabagames.com

# Marzec 07, 2019, 02:42:06
A jakie są powody, że nie bilboard i animowanie każdego osobno? Wtedy byłoby łatwiej podać jakieś rozwiązanie. Bo można np. zrobić Canvas i Image (nawet bez żadnego obrazka), ustawić kolor i animować wartość alpha, żeby płynnie wyszarzyć ekran. Ale to jest dosyć podobne do bilboardu pod względem zasłaniania całego ekranu, więc nie wiem, czy to nie narusza zasady "nie-bilboard" :D

Offline jjoker8

  • Użytkownik

# Marzec 07, 2019, 16:55:51
A jakie są powody, że nie bilboard i animowanie każdego osobno?
no animowanie każdego z osobna odpada chyba z oczywistych względów, duzo mam tego na scenie, a
buttony do poruszania postacią mam zrobione nie w canvasie tylko podpięte do kamery (przeciążone IPointerButtonEnter itd, zaś ich pozycja ustalana skryptem przez Camera.ScreenToWorldPoint() w stosunku do aspect ratio), i jak na canvasie zasłonię ekran to blokuje dotyk. Miałem jakiś bug w telefonie s4 na którym testowałem i buttony z canvasa źle działaly, gra jest dość dynamiczna a buttony się jakby zacinały.  Bug naprawiła reinstalacja androida, ale zostawiłem bo założyłem ze jakaś część userów też może tak mieć, no a jak już i tak się namęczyłem żeby działało to nie przenosiłem tych buttonów na canvasa. Chociaż w sumie to te buttony i tak znikają jak postać zginie to mogę zrobić przez canvasa, resztę GUI mam normalnie na canvasie.
Będę próbował to zrobić sposobem opisanym przez Boskiego. Znalazłem na youtube taki efekt, niestety bez objaśnienia jak go zrobiono
https://www.youtube.com/watch?v=4jnt0CWD40c

Offline matheavyk

  • Użytkownik
    • rabagames.com

  • +1
# Marzec 07, 2019, 21:42:36
Właśnie przez takie zabawy, których mi się już odechciało, od jakiegoś czasu używam w takich przypadkach pluginów. W przypadku buttonów do sterowania ruchem - Control Freak 2. Wtedy wiem, że autor i użytkownicy przetestowali już rozwiązanie na dużej liczbie telefonów i nie muszę się zastanawiać, czy u kogoś działa, czy nie.

A na tym filmiku jest pokazany shader i jego opcje do ustawiania m.in. "szarości". Czyli na filmiku jest zrobione tak, jak mówi Boski, z tym że można przypuszczać iż tam nie jest użyte RenderTexture tylko po prostu wszystkie materiały na meshach używają tego samego shadera, który ma "szarość" ustawianą globalnie.

Offline jjoker8

  • Użytkownik

# Marzec 07, 2019, 22:16:46
Dzięki, no będę próbował tym sposobem, shaderów jeszcze nigdy nie pisałem i muszę się wgryźć w temat :). Dzisiaj zająłem się tematem fps na telefonach, bo ustawiłem na 60 ale telefon się strasznie nagrzewał, i po 5 min grania fps spadały do 35-45 co powodowało wyraźne ścinanie się, a jak dawałem domyślne 30 fps to gra chodziła 2x wolniej, mimo że wszędzie używam deltaTime/fixedDeltaTime, nawet fizyka chodzi 2x wolniej na 30fps. Póki co zrobiłem tak że mam 60 fps (Screen.setFrameRate, v-sync wyłączony) i skaluje rozdzielczość na 4x mniejszą (gra i tak pixelartowa) i teraz chodzi stabilnie. Chociaż to rozwiązanie wydaje mi się conajmniej dziwne. Nie spodziewałem sie tylu problemów w prostej platformówce w stylu mario.

Offline Boski

  • Użytkownik

# Marzec 07, 2019, 22:44:50
Wydaje mi się, że to jednak RT -> na początku filmiku widać, że ma zaznaczony 1 materiał. Patrząc na widoczne obiekty, zdają się mieć różne tekstury. No chyba, że to vertex-color. Ale tytuł filmiku też zawiera "Unity image effect".
No i zachowanie przy manipulacji Brightness i contrast -> też wygląda bardziej jak rendertextura imo.
Niemniej, obydwa rozwiązania byłyby ok.

Offline laggyluk

  • Użytkownik
    • twitter

# Marzec 08, 2019, 22:52:42
Nie wiem czy to Ci pomoże ale na kamerę można wrzucać skrypty post processowe i jest ich tam trochę do wyboru w standard package cośtam
https://docs.unity3d.com/530/Documentation/Manual/script-Grayscale.html