Estou estudando a criação de protótipos de um jogo no Unity, que consistirá em sprites quadrados sólidos / ladrilhos. Eu acho que posso representar diferentes tipos de objetos com cores diferentes para cada uma das peças do jogo.
Eu acho que posso importar um único sprite quadrado e sombrear adequadamente no Unity, em vez de quadrados importados de muitas cores diferentes.
Minha experiência com o ajuste de matiz e saturação no Photoshop mostra que o branco não é uma cor fácil de mudar, pois as coisas brancas geralmente permanecem brancas. Meus testes no Unity mostram que eu posso alterar a "cor" de um sprite para algo que não seja branco, e o sprite parece sombreado adequadamente, apesar do que eu pensaria, dada a minha experiência no Photoshop.
Como os objetos brancos parecem ter o sombreamento de cor apropriado quando alterados no Unity, meu intestino me diz que esta é a melhor cor de base, o que significa que eu posso importar um único sprite quadrado branco e simplesmente ajustar a cor para representar objetos diferentes e estados do objeto.
Um sprite branco é realmente o melhor sprite de cor para começar e por que algo assim funciona no Unity, em vez de ajustar o matiz e a saturação no Photoshop?
Respostas:
O branco é a melhor cor de base para uma representação verdadeira. Manter a escala de cinza do sprite também pode facilitar alguns ajustes de cor para as equipes etc.
O Unity aplica um
Multiply
modo de mesclagem à textura e cor do sprite.O tipo de cor da unidade varia de 0 a 1, inclusive.
Color.White é igual a
(1, 1, 1, 1)
.Sabendo que o
1
tempo é algo em si.Se a escala de cinza
texture
for combinada com oColor
campo Sprite Renderer , cada pixel será ele próprio. Alterar esse campo simplesmente multiplicará cada valor uniforme da escala de cinza por cada componente da cor.Você pode jogar com o modo de mesclagem Multiplicar no seu editor de imagens favorito, como Photoshop ou GIMP.
fonte
Sprites-Additive.shader - GitHub Gist
As cores da unidade possuem 4 valores flutuantes típicos de muitos formatos de cores RGBA, correspondentes aos valores percentuais individuais das cores Vermelho, Verde, Azul e canal de transparência Alpha.
Além disso, como mencionado acima, o "Tonalidade" padrão aplicado pelo Unity é um sombreador multiplicativo que o Photoshop chama esse efeito de "Multiplicar" e o processo está literalmente multiplicando os valores de cores nos pixels do seu sprite pelo valor selecionado.
O problema disso é que um sombreador matemático de cores multiplicativo sempre produzirá o mesmo matiz (se você "multiplicar" por branco) ou cores mais escuras se você multiplicar por qualquer outra coisa. Me deparei com a situação em que queria o efeito exatamente oposto em uma situação do tipo de ferraria. O metal aquecido não deve ser multiplicado pelo amarelo para produzir uma tonalidade mais escura:
Em vez disso, reescrevi o sombreador multiplicativo padrão do Unity para ser um aditivo. Os resultados foram mais parecidos com o que eu estava procurando:
Fornecerei uma essência do Sprites-Additive.shader reescrito , se alguém estiver interessado.
Aqui está uma boa referência sobre terminologia e modos de cores: http://www.northlite.net/ps/blend.htm
fonte