Comprensione della pixel art in Unity 2d


10

Faccio fatica a capire le basi della pixel art in Unity.

Capisco cos'è un'unità e che se disegno il mio sprite con 16x16 pixel, dovrei impostare PPU su 16.

Prendi stardew valley per esempio, nell'immagine qui sotto puoi vedere chiaramente che il giocatore non è quadrato. Il creatore del gioco ha detto di aver realizzato tutto in 16x16, ma come possono esserci così tanti dettagli nei personaggi? Sicuramente non unirai diversi quadrati 16x16 per creare un personaggio (come faresti con una piastrella)?

inserisci qui la descrizione dell'immagine

Qual è il modo "comune" di trattare cose che non sono quadrate, come i personaggi nell'immagine. Fai semplicemente 16x32 sprite e imposti PPU su 16? Non lo farà sembrare un po 'strano accanto agli sprite 16x16? In genere scegli una taglia (ovvero 16, 32, 64) e poi ti attieni a tutto per tutto il gioco?

Il problema visivo che ho visto è questo, in cui uno sprite 32x32 sembra molto fuori posto (troppo nitido) accanto a uno sprite 16x16.

inserisci qui la descrizione dell'immagine

Quindi mi chiedo, come mescoli le dimensioni senza ottenere questo effetto in cui un'immagine appare molto più nitida dell'altra. Se, ad esempio, volevo che un personaggio fosse 16x32, o qualsiasi valore non quadrato, quando le mie tessere fossero 16x16


2
PPU non ha nulla a che fare con le dimensioni della trama dei tuoi sprite, decide semplicemente la scala in cui vengono visualizzati rispetto al tuo sistema di coordinate mondiale. Due sprite con lo stesso PPU mostreranno la stessa densità di pixel (cioè la dimensione visualizzata di ciascun blocco di pixel sarà la stessa da uno sprite all'altro se vista direttamente), anche se le immagini hanno dimensioni completamente diverse. Quindi non sono sicuro di cosa intendi con "non lo farà sembrare un po 'strano" - puoi approfondire esattamente quale problema visivo hai riscontrato?
DMGregory

@DMGregory Certo, fammi caricare un'immagine
Green_qaue,

1
L'effetto mostrato nello screenshot di esempio si verificherà se metti due immagini insieme con valori PPU diversi (o se un'immagine ha i suoi pixel raddoppiati / triplicati nella trama stessa o se hai applicato una scala a un'immagine ma non all'altra) . Se ti attieni a un valore PPU coerente e non ridimensioni i tuoi sprite, manterrai una densità pixel costante
DMGregory

@DMGregory Quindi se le mie tessere sono 16x16 e voglio un personaggio con più dettagli (come puoi vedere il carattere 16x16 sopra ha pochissimi dettagli), ad esempio 32x16, dovrei creare uno sprite 32x16 e mantenere PPU a 16 (stesso come piastrelle) ?. O per esempio se volessi un elefante, allora forse dovrebbe essere 64x128, lo imposterei anche su 16 PPU?
Green_qaue,

1
PPU è il numero di pixel che rientrano in un'unità mondiale. Se vuoi sempre che i tuoi pixel abbiano le stesse dimensioni, allora dovresti sempre usare un valore PPU coerente. (Ciò significa che un arbusto 16x16 e un elefante 64x128 entrambi a 16 PPU mostreranno entrambi la stessa densità di pixel e l'elefante coprirà un'area dello schermo 32 volte maggiore rispetto all'arbusto). È tutto quello che ti stavi chiedendo?
DMGregory

Risposte:


16

Riassumendo i punti sopra, ciò che conta per far corrispondere due pixel art è che la loro densità di pixel (texel per area dello schermo / unità mondiale) è la stessa.

Usando alcuni sprite di Stardew Valley come esempio, possiamo vedere che anche se gli sprite hanno dimensioni della trama diverse, si abbinano su una griglia coerente perché ogni pixel ha la stessa dimensione.

Esempio che mostra due sprite di dimensioni diverse con la stessa densità di pixel.

Se pensiamo alle dimensioni della pianta come una piastrella / un'unità di spazio mondiale, possiamo vedere questa unità di 16 pixel in orizzontale e in verticale. Il personaggio, che ha il doppio dell'altezza della pianta, copre anche il doppio del numero di tessere / unità del mondo, quindi la densità dei pixel rimane la stessa a 16 pixel per unità del mondo.

Per Unity in particolare, lo espone come impostazione Pixel per unità nella finestra di ispezione delle impostazioni di importazione Sprite . Fintanto che utilizzi un numero coerente qui per tutti i tuoi sprite, Unity gestirà automaticamente disegnandoli della giusta dimensione nel tuo mondo per mantenere questa densità di pixel, anche se sono dimensioni dispari e non potenza di due o esatte multipli della dimensione della tua piastrella. Quindi, in questo esempio, sia l'arbusto che il personaggio e tutto il resto del gioco userebbero un PPU DI 16.

Il numero esatto che scegli non è un grosso problema, è la coerenza che conta di più. Se volessimo che ogni riquadro si estendesse su 2 unità del mondo, in modo che durante la modifica del livello potessimo agganciare facilmente gli angoli delle tessere (numeri dispari) e i centri delle tessere (numeri pari), utilizzeremmo un PPU di 8 invece di tutti i nostri sprite.

Basta non abbassarlo troppo in basso. Vedrai alcuni articoli là fuori che raccomandano un'impostazione PPU di 1, il che significa che uno sprite da 256 pixel coprirà 256 unità del mondo. Anche se questo potrebbe non sembrare allarmante, sistemi come la fisica sono sintonizzati supponendo che la maggior parte del tuo gameplay avverrà su scale da decimi a decine di unità, e rendere la tua scala troppo grande può farli comportare male. Prova a scegliere un numero di pixel significativi per il tuo gameplay, come la larghezza del tuo personaggio o la tua tessera. Ciò renderà anche la tua matematica più semplice per la programmazione e la progettazione dei livelli (ad es. "Voglio che questo personaggio diventi 3 tessere giuste, quindi questo è x + 3.0f")

Nota che ridimensionare uno sprite, un'immagine dell'interfaccia utente o i suoi genitori usando le proprietà di trasformazione li distorcerà da questa costante densità di pixel, quindi fai molta attenzione con le proprietà di scala e mantieni la maggior parte o tutta la tua scena su una scala di 1,0 per semplicità.

Un'ultima avvertenza è che nulla di tutto ciò determina la dimensione effettiva dei tuoi sprite sullo schermo: ciò è determinato dalle dimensioni della finestra / schermo del gioco e dalle dimensioni / FoV / angolo della videocamera. Per Pixel Perfect 2D, devi anche assicurarti che l'altezza della tua finestra sia un numero intero multiplo del numero di pixel sprite che la tua videocamera vede (altezza ortografica della videocamera x 2 x PPU)

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.