Oglądałem zwiastun filmu Seasons After Fall i zaskoczył mnie efekt, którego używają do przejścia między sezonami (około 21-24 sekund):
Grafika poziomu, w tym tła i platformy pierwszoplanowe, zmieniają się z sepijskiej jesieni w lawendową zimę, z efektem rozciągającym się na zewnątrz od postaci gracza trochę jak woda nasiąkająca papierem.
Wygląda to więcej niż zmiana palety, ponieważ szczegóły w wzorach liści i kory zmieniają się podczas przejścia.
Jednym ze sposobów osiągnięcia tego byłoby połączenie dwóch środowisk za pomocą mapy alfa. Prostym podejściem byłoby renderowanie „tylnego” (ukrytego) tła, a następnie „frontowego” (początkowo widocznego) tła. Użyj kanału alfa przedniego tła lub oddzielnej tekstury alfa, aby kontrolować przezroczystość przedniego tła, tak jak w przypadku każdego przezroczystego lub półprzezroczystego duszka. Tam, gdzie ta mapa alfa jest mniejsza niż jedna, wyświetlą się fragmenty tylnego tła.
W takim razie wystarczy zbudować tę mapę alfa zgodnie z oczekiwanym efektem. Na pokazanym przez Ciebie filmie wygląda na to, że taka mapa została zbudowana z „malarskim” podejściem. Może to polegać na losowym umieszczaniu kół zerowych alfa (które upuszczają do 1,0 alfa wokół ich krawędzi). Zacznij układać te kręgi ściśle stronniczo wokół źródła odkrycia, a wraz z upływem czasu rozluźnij uprzedzenia, aby rozprzestrzeniły się na zewnątrz. Robiąc to, prawdopodobnie będziesz również chciał rozszerzyć promień kręgów.
Możesz dostosować to podejście, jeśli potrzebujesz, aby dostosować efekt do swoich pragnień; zwykłe koła mogą na przykład wyglądać na zbyt „plamiste”, a zamiast tego możesz losowo wybić losowo wybraną wcześniej „pociągnięcie pędzla” do maski. Nawet samo losowe umiejscowienie może wyglądać nieco zbyt nieuporządkowane, a zamiast tego możesz zdecydować się na wybicie maski alfa wzdłuż wcześniej przygotowanej krzywej lub splajnu, aby podkreślić określony styl.
Ups, wygląda na to, że pisałem bardzo podobną odpowiedź w tym samym czasie, w którym byłeś. ^ _ ^; Przepraszamy za nakładanie się.
DMGregory
Dziękuję za odpowiedź, wypróbuję to i wrócę do ciebie, działa!
Jeszcze
Możesz także ręcznie narysować cztery lub pięć przejść i po prostu trochę losowo obrócić. Wątpię, czy ktokolwiek będzie się przejmował, gdy będzie to szybki i najgorszy scenariusz, w którym można grać z obrotem i skalowaniem poziomym.
Pozew Fund Moniki w
Przepraszam, że znowu przeszkadzam, ale zastanawiałem się, czy możesz rozwinąć tę kwestię bardziej, ponieważ testowałem ją na własną rękę, ale była nieco niezręczna i nie mogłem też uczynić jej przejrzystym. Jeszcze raz przepraszam za zakłócenia i dziękuję!
Jessca Stone
Od razu wydaje się, że wiele rzeczy może być tam źle; Naprawdę nie mogę pomóc w debugowaniu tego tutaj, ale możliwe, że ktoś na Czacie z Rozwój Gry może to zrobić, a ty również czasami możesz mnie tam znaleźć.
7
Podchodzę do tego przy użyciu niestandardowego modułu cieniującego w moim SpriteRenderers, który pobiera dwie tekstury, po jednej dla każdej wersji, między którą chcesz przejść.
(Nawet jeśli użyję tego efektu do przejścia między więcej niż dwoma stanami, nadal staram się ustrukturyzować grę, więc potrzebujemy tylko dwóch do renderowania w tym samym czasie: stary stan i następny stan. Pozwolimy na to przejście do zakończenia, zanim pozwolimy graczowi zainicjować przejście do trzeciego stanu, w którym to momencie możemy zastąpić nasz poprzedni „stary” stan, ponieważ nie jest już widoczny)
Ten moduł cieniujący przenikałby między dwiema teksturami, wykorzystując trzecią jednokanałową teksturę jako maskę efektu (np. Czarny = 100% stary stan, szary = mieszanka 50/50, biały = 100% nowy stan). Zmapowałbym teksturę tej maski w obszarze ekranu.
Następnie ustawiłem drugą kamerę do renderowania do RenderTexture, aby wygenerować tę maskę. Drugi aparat poruszałby się z moim głównym aparatem i pasowałby do jego FoV / ortogonalnego rozmiaru, więc każda animacja w moim widoku dotyczy zarówno świata, jak i konsekwentnie ujawnia maskę. Ten aparat renderowałby przed moim głównym aparatem i był skonfigurowany tak, aby wyświetlać tylko treść na specjalnie wyznaczonej warstwie „ujawnienia”. W przykładzie wideo wygląda na to, że używają układu cząstek, aby rozproszyć kolekcję małych kształtów chmur w tę odsłoniętą teksturę, która rozszerza się w czasie, nadając przejścieowi wygląd organiczny.
Podchodzę do tego przy użyciu niestandardowego modułu cieniującego w moim SpriteRenderers, który pobiera dwie tekstury, po jednej dla każdej wersji, między którą chcesz przejść.
(Nawet jeśli użyję tego efektu do przejścia między więcej niż dwoma stanami, nadal staram się ustrukturyzować grę, więc potrzebujemy tylko dwóch do renderowania w tym samym czasie: stary stan i następny stan. Pozwolimy na to przejście do zakończenia, zanim pozwolimy graczowi zainicjować przejście do trzeciego stanu, w którym to momencie możemy zastąpić nasz poprzedni „stary” stan, ponieważ nie jest już widoczny)
Ten moduł cieniujący przenikałby między dwiema teksturami, wykorzystując trzecią jednokanałową teksturę jako maskę efektu (np. Czarny = 100% stary stan, szary = mieszanka 50/50, biały = 100% nowy stan). Zmapowałbym teksturę tej maski w obszarze ekranu.
Następnie ustawiłem drugą kamerę do renderowania do RenderTexture, aby wygenerować tę maskę. Drugi aparat poruszałby się z moim głównym aparatem i pasowałby do jego FoV / ortogonalnego rozmiaru, więc każda animacja w moim widoku dotyczy zarówno świata, jak i konsekwentnie ujawnia maskę. Ten aparat renderowałby przed moim głównym aparatem i był skonfigurowany tak, aby wyświetlać tylko treść na specjalnie wyznaczonej warstwie „ujawnienia”. W przykładzie wideo wygląda na to, że używają układu cząstek, aby rozproszyć kolekcję małych kształtów chmur w tę odsłoniętą teksturę, która rozszerza się w czasie, nadając przejścieowi wygląd organiczny.
źródło