Resumindo os pontos acima, o que importa para que duas peças de pixel art correspondam é que a densidade de pixels (texels por área de tela / unidade mundial) é a mesma.
Usando alguns sprites do Stardew Valley como exemplo, podemos ver que, embora os sprites tenham dimensões de textura diferentes, eles correspondem a uma grade consistente porque cada pixel é desenhado do mesmo tamanho.
Se pensarmos no tamanho da planta como um bloco / uma unidade do espaço mundial, podemos ver que essa unidade mede 16 pixels na horizontal e na vertical. O personagem, com o dobro da altura da planta, também cobre o dobro do número de blocos / unidades mundiais; portanto, a densidade de pixels permanece a mesma em 16 pixels por unidade mundial.
Para o Unity especificamente, ele expõe isso para você como uma configuração de pixels por unidade no inspetor de configurações de importação do Sprite . Desde que você use um número consistente aqui para todos os seus sprites, o Unity tratará automaticamente de desenhá-los no tamanho certo em seu mundo para manter essa densidade de pixels - mesmo que sejam tamanhos ímpares e não sejam dois ou exato múltiplos do tamanho do seu bloco. Portanto, neste exemplo, tanto o arbusto quanto o personagem, e todo o resto do jogo usariam um PPU OF 16.
O número exato escolhido não é grande coisa, é a consistência que mais importa. Se quisermos que cada bloco abranja 2 unidades mundiais, para que, ao editar o nível, possamos ajustar facilmente os cantos (números ímpares) e os centros dos blocos (números pares), usaríamos uma PPU de 8 para todos os nossos sprites.
Só não diminua muito . Você verá alguns artigos recomendando uma configuração PPU de 1, o que significa que um sprite de 256 pixels abrangerá 256 unidades mundiais. Embora isso possa não parecer alarmante, sistemas como a física estão sintonizados, assumindo que a maior parte do seu jogo estará acontecendo em escalas de décimos a dezenas de unidades, e aumentar sua escala pode fazer com que eles se comportem mal. Tente escolher um número de pixels que seja significativo na sua jogabilidade, como a largura do seu personagem ou o seu ladrilho. Isso também tornará sua matemática mais fácil para a programação e o design de níveis (por exemplo, "Eu quero que esse personagem trace 3 blocos corretamente, então é isso x + 3.0f
")
Observe que o dimensionamento de um sprite, imagem de interface do usuário ou de seus pais usando propriedades de transformação os distorcerá desta densidade consistente de pixels, portanto, tenha muito cuidado com as propriedades de escala e mantenha a maior parte ou toda a cena em uma escala de 1,0 por simplicidade.
Um último aviso é que nada disso determina o tamanho dos sprites na tela - isso é determinado pelo tamanho da janela / tela do jogo e pelo tamanho / FoV / ângulo da câmera. Para um pixel perfeito em 2D, você também precisará garantir que a altura da sua janela seja um número inteiro múltiplo do número de pixels sprite que sua câmera vê (altura ortográfica da câmera x 2 x PPU)