Sprite di auto e astronavi da ogni angolazione
Un'auto in un gioco di corse dall'alto o un'astronave in uno sparatutto in stile Asteroids può girare verso qualsiasi direzione. Ruotare uno sprite nel motore ne rovina i pixel; disegnare 32 angoli a mano richiede giorni. Da un modello 3D, ogni angolo è un render.

Perché i veicoli hanno bisogno di tanti angoli
Un personaggio di un GdR dall'alto cammina in quattro o otto direzioni, quindi gli servono quattro o otto lati. Un veicolo è diverso: sterza. Un'auto che affronta una curva o un'astronave che ruota sotto la leva attraversa ogni direzione intermedia, e se lo sprite ne può mostrare solo otto, scatta dall'una all'altra a gradini visibili di 45 gradi.
I giochi risolvono il problema in uno di tre modi:
- Ruotare uno sprite nel motore. Economico, ma ruotare la pixel art la ricampiona. Con qualsiasi angolo diverso da 90 gradi, le linee si spezzano, i singoli pixel si raddoppiano o spariscono e, con lo smoothing attivo, i bordi si ammorbidiscono. Non sembra più pixel art.
- Disegnare a mano ogni angolo. Ha un bell'aspetto, ma è un lavoro enorme: 32 angoli di un'auto, più la versione danneggiata, più ogni colore di squadra. Ogni modifica al design significa ridisegnarli tutti.
- Renderizzare ogni angolo da un modello 3D. È ciò che facevano i giochi di corse e gli sparatutto degli anni '90 con gli sprite pre-renderizzati, ed è ciò che fa Pixor con un anello di camere.
Quanti angoli
| Angoli | Gradino | Adatto a |
|---|---|---|
| 8 | 45° | Carri armati e unità che girano lentamente, giochi di strategia |
| 16 | 22.5° | La maggior parte dei giochi di corse e degli sparatutto dall'alto, torrette |
| 32 | 11.25° | Sterzata fluida, astronavi che ruotano liberamente |
| 64 | 5.6° | Sprite di veicoli grandi, rotazioni lente e precise |
Più grande è lo sprite, più angoli servono: un'astronave da 16 pixel cambia appena tra due direzioni vicine, un'auto da 64 pixel scatta in modo visibile.
Dall'alto, dritto in giù
Per un'astronave o un'auto vista dall'alto, renderizza con la vista dall'alto e un anello di lati:
pxr render race-car.glb --preset selout --view top-down --size 40 --ring 16 \
--clip none --export png,json -o car.png

--ring 16 mette 16 camere attorno al modello, in senso antiorario a partire dal fronte, una per lato, tutte con la stessa dimensione e la stessa scala di pixel per metro, così l'auto ha la stessa dimensione in ogni direzione e ruota attorno a un unico pivot fisso. Lo sheet ha una riga per lato; il JSON dà un nome a ciascuna, così il gioco sceglie il fotogramma in base alla direzione. --ring va da 1 a 64; --sides 0,10,20,... accetta invece una tua lista di angoli.
Nell'app, aggiungi una camera con + nella Struttura, scegli Una camera per… › Sparatutto dall'alto (dritto in giù, 16 lati, 32 px), oppure imposta Vista sulla camera Sud e usa Anello attorno al modello per 4, 8, 16 o 32 lati.
La vista da corsa
I giochi di corse dall'alto dell'era arcade guardavano spesso in giù in obliquo, così ogni angolo mostrava anche il lato dell'auto. La camera Corse fa proprio questo: 12° in giù, 16 lati, 64 px.
pxr render race-car.glb --preset selout --camera racing --clip none -o car-racing.png

Luce che resta ferma, o che gira con l'auto
Per impostazione predefinita la luce principale segue la camera: sta dallo stesso lato in ogni vista. In un gioco dall'alto è spesso ciò che si vuole, perché ogni direzione è illuminata allo stesso modo e uno sprite appare uguale ovunque sia rivolto.
Se la luce deve restare ferma nel mondo, in modo che un'auto rivolta lontano dal sole abbia il lato in ombra verso il giocatore, disattiva Segue la camera sulla luce principale (--light-space world). L'animazione qui sopra usa un terzo modo: --turntable 32 fa girare una volta il modello stesso sotto un'unica camera, come azione di 32 fotogrammi, così la luce scivola sullo scafo mentre gira.
Animato da ogni angolo
Un veicolo spesso si muove mentre gira: le ruote girano, un motore sfarfalla, una torretta segue il bersaglio. Dagli una clip e ogni lato riceve ogni fotogramma:
pxr render spaceship.glb --preset selout --view top-down --size 48 --ring 32 \
--clip all --export png,json,godot
Gli sheet crescono in fretta con 32 lati; --max-height 4096 divide uno sheet alto in pagine, con clip intere in una pagina, e --dedupe memorizza una sola volta i fotogrammi identici. astronave, auto da corsa e auto della polizia della libreria sono modelli CC0 gratuiti con cui provare.
Varianti gratis
Poiché ogni angolo nasce da un solo modello, le varianti non costano nulla da disegnare. --variant hit-flash crea una versione lampeggiante per il danno; --team con --variant team:blue ricolora un colore di squadra; --material-colour dà all'auto una nuova verniciatura. La sezione sulle varianti di palette del manuale le elenca tutte. Per le astronavi che volano su per lo schermo invece di ruotare, vedi gli sprite per shmup.
Domande
Di quante rotazioni ha bisogno lo sprite di un'auto vista dall'alto?
16 è il minimo abituale per una sterzata fluida; 32 appare fluido alla maggior parte delle velocità, e 64 si adatta a sprite grandi o a rotazioni lente e precise. Le astronavi dei giochi in stile Asteroids ne hanno spesso 16 o 32. Meno di 16 appare a scatti.
Perché non ruotare uno sprite nel motore?
Ruotare la pixel art di un angolo diverso da 90 gradi la ricampiona: le linee si spezzano, i singoli pixel si raddoppiano o spariscono e, con il filtraggio, i bordi si sfocano. Un render per ogni angolo mantiene linee pulite di un pixel in ogni direzione.
Il veicolo può avere un'animazione anche a ogni angolo?
Sì. Con una clip, ogni lato riceve ogni fotogramma: la fiammata del propulsore di un'astronave o le ruote che girano di un'auto in 16 direzioni sono un solo sheet con una riga per lato.
Leggi anche
- Dimensioni degli sprite per giochi in pixel art
- Contorni
- Selout: contorni selettivi
- Pixel art isometrica
- Dal 3D alla pixel art: la guida completa
Provalo sul tuo modello, gratis nel browser, o acquista la versione completa.
Prova nel browser Acquista Pixor