Il cambio di stagione rivela l'effetto


10

Stavo guardando il trailer del teaser per Seasons After Fall e sono stato colpito dall'effetto che usano per passare da una stagione all'altra (circa 21-24 secondi):

Animazione che mostra l'effetto di rivelazione

L'arte di livello, incluso lo sfondo e le piattaforme in primo piano, cambia da un autunno color seppia a un inverno di lavanda, con l'effetto che si diffonde all'esterno dal personaggio del giocatore un po 'come l'acqua che si inzuppa attraverso la carta.

Sembra qualcosa di più di un semplice cambio di tavolozza, poiché i dettagli nei motivi foglia e corteccia cambiano nella transizione.

Come potrei ottenere un effetto simile a questo in un gioco Unity 2D?

Risposte:


12

Un modo per ottenere ciò sarebbe fondersi tra i due sfondi usando una mappa alfa. Un approccio semplice sarebbe quello di rendere lo sfondo "nascosto" (nascosto), e quindi lo sfondo "anteriore" (inizialmente visibile). Usa il canale alfa dello sfondo frontale, o una trama alfa separata, per controllare la trasparenza dello sfondo frontale come faresti con uno sprite trasparente o traslucido. Dove questa mappa alfa è inferiore a una, verranno mostrate parti dello sfondo posteriore.

Quindi si tratta solo di costruire quella mappa alfa in base all'effetto che desideri. Nel video che mostri, sembra che una simile mappa sia stata costruita con un approccio "pittorico". Ciò potrebbe comportare il posizionamento casuale di cerchi di zero alfa (che sfumano a 1,0 alfa attorno ai loro bordi). Inizia a posizionare questi cerchi strettamente distorti attorno all'origine della rivelazione e nel tempo rilassa la distorsione in modo che si diffondano verso l'esterno. Mentre lo fai, probabilmente vorrai espandere anche il raggio dei cerchi.

Puoi modificare questo approccio quando ne hai bisogno per adattare l'effetto ai tuoi desideri; cerchi semplici potrebbero finire per sembrare un po 'troppo "macchiati" per esempio, e potresti invece voler timbrare casualmente un "tratto di pennello" pre-selezionato a caso nella maschera. Anche il posizionamento casuale stesso potrebbe sembrare un po 'troppo disordinato e potresti invece optare per timbrare la maschera alfa lungo una curva o una spline pre-creata per evidenziare uno stile particolare.


Oops, stavo scrivendo una risposta molto simile allo stesso tempo, a quanto pare. ^ _ ^; Ci scusiamo per la sovrapposizione.
DMGregory

Grazie per la risposta, lo proverò e ti risponderò che funziona! Grazie ancora
Jessca Stone,

Puoi anche disegnare a mano quattro o cinque transizioni e semplicemente randomizzare un po 'la rotazione. Dubito che a qualcuno interesserà quando è lo scenario rapido e nel caso peggiore, puoi giocare con la rotazione e il ridimensionamento orizzontale.
Fondi Monica's Lawsuit,

Mi dispiace disturbare di nuovo, ma mi chiedevo se potessi approfondire di più, dato che lo stavo testando da solo, ma era un po 'goffo e non potevo renderlo trasparente. Scusami ancora per il disturbo e grazie!
Jessca Stone

A prima vista sembra che molte cose potrebbero essere potenzialmente sbagliate lì; Non posso davvero aiutarti a eseguire il debug qui, ma è possibile che qualcuno nella chat di sviluppo del gioco sia in grado di farlo, e talvolta puoi trovarmi anche lì.

7

Mi avvicinerei a questo usando uno shader personalizzato sul mio SpriteRenderers che prende due trame, una per ogni versione tra cui vuoi passare.

(Anche se utilizzassi questo effetto per la transizione tra più di due stati, proverei comunque a strutturare il gioco, quindi ne abbiamo bisogno solo due per il rendering alla volta: il vecchio stato e il successivo. Lasciamo che la transizione venga giocata fino al completamento prima di consentire al giocatore di iniziare una transizione verso un terzo stato, a quel punto possiamo sostituire il nostro precedente "vecchio" stato poiché non è più visibile)

Questo shader si dissolverebbe in modo incrociato tra le due trame, usando una terza trama a canale singolo come maschera per l'effetto (ad es. Nero = 100% vecchio stato, grigio = 50/50 sfumato, bianco = 100% nuovo stato). Mapperei questa trama maschera nello spazio dello schermo.

Quindi avrei impostato una seconda telecamera per il rendering in un RenderTexture, per generare questa maschera. Questa seconda fotocamera si sposterebbe con la mia fotocamera principale e corrisponderebbe alle sue dimensioni FoV / ortografiche, quindi qualsiasi animazione a mio avviso si applica sia al mondo che rivela costantemente la maschera. Questa telecamera verrebbe visualizzata prima della mia fotocamera principale e sarebbe configurata per visualizzare solo i contenuti su un livello "rivelare" appositamente designato. Nell'esempio del video, sembra che utilizzino un sistema di particelle per suddividere una raccolta di piccole forme di nuvole in questa trama rivelatrice, che si espande nel tempo, dando alla transizione un margine di diffusione dall'aspetto organico.


Grazie per la risposta, lo proverò e ti risponderò che funziona! Grazie ancora!
Jessca Stone,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.