Promoção de Halloween: −40% O Pixor sai por US$ 19.99 US$ 11.99 até 4 de novembro, no itch.io →

Sprites de carros e naves em todos os ângulos

Um carro num jogo de corrida top-down ou uma nave num shooter ao estilo Asteroids vira para qualquer direção. Girar um sprite na engine quebra seus pixels; desenhar 32 ângulos à mão leva dias. A partir de um modelo 3D, cada ângulo é uma renderização.

Uma nave espacial da biblioteca grátis, renderizada com o Pixor
Um carro de corrida da biblioteca grátis
Uma nave espacial em pixel art vista de cima girando por 32 direções
32 direções, top-down

Por que veículos precisam de tantos ângulos

Um personagem num RPG top-down anda em quatro ou oito direções, então precisa de quatro ou oito lados. Um veículo é diferente: ele esterça. Um carro fazendo uma curva ou uma nave girando sob o direcional passa por todas as direções intermediárias, e se o sprite só consegue mostrar oito, ele pula de uma para a próxima em degraus visíveis de 45 graus.

Os jogos resolvem isso de uma entre três formas:

  1. Girar um sprite na engine. Barato, mas girar pixel art o reamostra. Em qualquer ângulo que não seja múltiplo de 90 graus, os traços se quebram, pixels isolados dobram ou somem, e com suavização as bordas ficam macias. Deixa de parecer pixel art.
  2. Desenhar cada ângulo à mão. Fica certo, e dá muito trabalho: 32 ângulos de um carro, mais a versão danificada, mais cada cor de time. Toda mudança no design significa redesenhar todos eles.
  3. Renderizar cada ângulo a partir de um modelo 3D. É o que os jogos de corrida e de tiro dos anos 1990 faziam com sprites pré-renderizados, e o que o Pixor faz com um anel de câmeras.

Quantos ângulos

Ângulos Degrau Bom para
8 45° Tanques e unidades que giram devagar, jogos de estratégia
16 22.5° A maioria dos jogos de corrida e de tiro top-down, torretas
32 11.25° Direção suave, naves que giram livremente
64 5.6° Sprites grandes de veículos, giros lentos e precisos

Quanto maior o sprite, mais ângulos ele precisa: uma nave de 16 pixels quase não muda entre duas direções próximas, um carro de 64 pixels dá saltos visíveis.

Top-down, de cima para baixo

Para uma nave ou um carro visto de cima, renderize com a vista top-down e um anel de lados:

pxr render race-car.glb --preset selout --view top-down --size 40 --ring 16 \
  --clip none --export png,json -o car.png

Um carro de corrida vermelho visto de cima em 16 ângulos, duas linhas de oito

--ring 16 coloca 16 câmeras ao redor do modelo, em sentido anti-horário a partir da frente, uma por lado, todas com o mesmo tamanho e a mesma escala de pixels por metro, então o carro tem o mesmo tamanho em todas as direções e gira em torno de um único pivô fixo. A folha tem uma linha por lado; o JSON nomeia cada uma, para o jogo escolher o quadro pela direção. --ring vai de 1 a 64; --sides 0,10,20,... aceita, em vez disso, sua própria lista de ângulos.

No app, adicione uma câmera com + na Estrutura, escolha Uma câmera para… › Shooter top-down (de cima para baixo, 16 lados, 32 px), ou defina Vista na câmera Sul e use Anel ao redor do modelo para 4, 8, 16 ou 32 lados.

A vista de corrida

Os jogos de corrida top-down da era dos arcades muitas vezes olhavam de cima em diagonal, então cada ângulo também mostrava a lateral do carro. A câmera Corrida faz isso: 12° para baixo, 16 lados, 64 px.

pxr render race-car.glb --preset selout --camera racing --clip none -o car-racing.png

Um carro de corrida vermelho em 16 ângulos, visto de uma câmera baixa e inclinada

Luz que fica parada, ou gira com o carro

Por padrão, a luz principal segue a câmera: ela fica do mesmo lado em todas as vistas. Num jogo top-down isso costuma ser o desejado, porque todas as direções recebem a mesma luz e um sprite parece o mesmo para onde quer que aponte.

Se a luz deve ficar parada no mundo, de modo que um carro de costas para o sol tenha o lado sombreado voltado para o jogador, desative Segue a câmera na luz principal (--light-space world). A animação acima usa uma terceira forma: --turntable 32 gira o próprio modelo uma vez sob uma câmera, como uma ação de 32 quadros, e a luz desliza pelo casco enquanto ele gira.

Animado em todos os ângulos

Um veículo costuma se mover enquanto gira: rodas giram, um motor tremula, uma torre acompanha o alvo. Dê a ele um clipe e cada lado recebe todos os quadros:

pxr render spaceship.glb --preset selout --view top-down --size 48 --ring 32 \
  --clip all --export png,json,godot

As folhas crescem rápido com 32 lados; --max-height 4096 divide uma folha alta em páginas, com clipes inteiros em cada página, e --dedupe guarda quadros idênticos uma só vez. Os modelos nave espacial, carro de corrida e viatura de polícia da biblioteca são CC0 e grátis para você testar.

Variantes de graça

Como cada ângulo vem de um só modelo, as variantes não custam nada para desenhar. --variant hit-flash grava uma versão com clarão para o dano; --team com --variant team:blue recolore a cor de um time; --material-colour dá ao carro uma pintura nova. A seção de variantes de paleta do manual lista todas. Para naves que sobem pela tela em vez de girar, veja sprites de shmup.

Perguntas

Quantas rotações um sprite de carro top-down precisa?

16 é o mínimo usual para uma direção suave; 32 fica suave na maioria das velocidades, e 64 serve para sprites grandes ou giros lentos e precisos. Naves em jogos ao estilo Asteroids costumam ter 16 ou 32. Menos de 16 parece travado.

Por que não girar um sprite na engine?

Girar pixel art em qualquer ângulo que não seja múltiplo de 90 graus a reamostra: os traços se quebram, pixels isolados dobram ou somem, e com filtragem as bordas borram. Uma renderização em cada ângulo mantém traços limpos de um pixel em todas as direções.

O veículo também pode ter uma animação em todos os ângulos?

Sim. Com um clipe, cada lado recebe todos os quadros: o tremular do propulsor de uma nave ou as rodas girando de um carro em 16 direções é uma só folha com uma linha por lado.

Leia a seguir

Experimente no seu próprio modelo, grátis no navegador, ou adquira a versão completa.

Testar no navegador Comprar o Pixor