2022 2DGameArtAnimationLightingforArtists Ebook USE 3 Trad
2022 2DGameArtAnimationLightingforArtists Ebook USE 3 Trad
2022 2DGameArtAnimationLightingforArtists Ebook USE 3 Trad
2 DGAMEART ,
ANIMAÇÃO ,
EILUMINAÇÃO
PARAARTISTAS
Machine Translated by Google
Conteúdo
Introdução. ...
Projeto.configuração:.renderização.2D... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
A.arte.para.o.seu.jogo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
Escolha.a.perspectiva.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
Resolução.de.seus.ativos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
Nível.design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Perspectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54
.
Renovando a aparência dos personagens. . . . . . . . . . . . . . . . . . . . . . . . . . .55
Desempenho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
Pesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
Peles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67
2D.Luzes. ...
Sprite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
Paramétrico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
Ponto/Local. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
Globalmente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
. . . . . . . . . . . . . . . . . . .80
Preparando sprites para iluminação 2D.
Emissão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
Barulho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95
Renderizador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96
Pós-processamento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110
Florescer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114
Vinheta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
Conclusão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
Machine Translated by Google
Introdução
Os jogos 2D evocam nostalgia para as pessoas que cresceram jogando-os nas décadas de
1980 e 1990. Mas, como títulos feitos com Unity, como Cuphead, Hollow Knight, Among
Us, Skul: The Hero Slayer e a série Ori mostram, não há limite para o quão inovadores os
jogos 2D de hoje podem ser.
Este é o nosso maior e mais abrangente guia de desenvolvimento de jogos 2D. Ele é destinado
a desenvolvedores e artistas com experiência intermediária em Unity que queiram fazer um
jogo 2D comercial, quer trabalhem de forma independente ou em equipe.
Este guia foi escrito com a colaboração de especialistas do Unity 2D para ajudar criadores
iniciantes a entender as principais decisões que devem tomar no início de um projeto e aproveitar
ao máximo o conjunto de ferramentas do Unity 2D.
Mesmo que você seja novo no Unity, você encontrará muitas dicas e práticas úteis no
guia . No entanto, sugerimos que você comece com os tutoriais e cursos para iniciantes
disponíveis gratuitamente no Unity Learn . Esperamos que você aproveite este guia e desejamos
a você boa sorte com o desenvolvimento do seu jogo . O futuro é brilhante para criadores 2D .
Alguns belos jogos 2D feitos com Unity – no sentido horário a partir do canto superior esquerdo: Ori and the Will of the Wisps da Moon Studios, Cuphead do Studio
MDHR, MegaSphere da AK Games Hollow Knight da Team Cherry
Autor
Contribuidores da Unity
Eduardo Oriz liderou a produção deste guia. Ele é um gerente sênior de marketing
de conteúdo na Unity com muitos anos de experiência trabalhando com equipes de
desenvolvimento da Unity, incluindo a equipe de ferramentas 2D, e um amplo entendimento do
que a Unity oferece aos desenvolvedores e estúdios de jogos.
Por fim, agradecemos aos colaboradores que nos apoiaram, incluindo redatores, editores e
designers gráficos, além de inúmeros outros na Unity que ajudaram a produzir, refinar e
compartilhar este guia.
Observe que as dicas e fluxos de trabalho neste e-book são baseados no conjunto
de ferramentas 2D da versão Unity 2020 LTS, no entanto. do . . . usando novas versões
Unity, incluindo o Unity 2021 LTS.
Configuração do projeto:.
Renderização 2D..
O Unity fornece três pipelines de renderização: o Built-In Render Pipeline e dois Scriptable
Render Pipelines (SRPs). Os dois SRPs são o Universal Render Pipeline (URP) e o High Definition
Render Pipeline (HDRP). O URP se aplica a todas as plataformas, enquanto o HDRP é projetado para ser
usado em jogos direcionados a PCs e consoles de ponta.
O URP é usado neste livro porque fornece um pipeline gráfico para Iluminação 2D, permitindo que
você crie luzes 2D e efeitos de iluminação, incluindo Freeform, Sprite, Spot e Global . O URP também
é compatível com o Shader Graph, efeitos de pós-processamento e o recurso de empilhamento
de câmeras.
Para usar o 2D Renderer, você primeiro precisa instalar o modelo 2D Project do Unity Hub e do
URP . O modelo 2D vem com várias configurações de projeto que são otimizadas para um jogo 2D:
Escolha.pacotes.2D.do.Gerenciador.de.Pacotes
Se você já usou o Unity antes, sabe que muitos recursos estão disponíveis como
pacotes modulares . Você pode ver quais versões de cada pacote estão disponíveis
via Window.>.Package.Manager no Editor . Você pode instalar, remover, desabilitar ou
atualizar pacotes para cada projeto aqui também . Os pacotes incluídos no 2D
Template são 2D Animation, 2D Pixel Perfect, 2D PSD Importer e 2D SpriteShape .
Criar.um.novo.URP.Asset
Para usar o URP, crie um ativo URP e atribua o ativo nas configurações de gráficos.
Clique com o botão direito do mouse na janela Projeto (ou clique no menu Ativos na Barra de
Ferramentas) e escolha Ativos.>.Criar.>.Renderização.>.Universal.Render.Pipeline.>.
Pipeline.Asset.(Forward.Renderer) .
Um Renderer Asset é criado ao mesmo tempo que um URP Asset, e você precisará substituí-
lo pelo 2D Renderer Asset. Para substituí-lo, clique com o botão direito na janela Project ou clique
no menu Assets, depois escolha Assets.>.Create.>.
Renderização.>.Universal.Render.Pipeline.>.2D.Renderer .
Atribuir.o.Renderizador.2D
O 2D Renderer agora está configurado e pronto para uso. Você também pode ajustar
as configurações de renderização alternando para a categoria Qualidade em Configurações do projeto.
Leia mais sobre configurações de renderização aqui .
Observação: se você iniciar um novo projeto no Unity 2021 ou posterior, o modelo 2D,
chamado 2D (URP), vem com o Renderizador 2D já configurado, então você não precisará
concluir essas etapas.
A.arte.para.seu.jogo
Durante a fase de conceito de arte, você precisará tomar muitas decisões que
impactarão o lado técnico do seu projeto.
No design de jogos, é uma prática comum simular uma captura de tela ou uma série de imagens
para mostrar o estilo de arte, a ação e a IU do jogo. Os mockups são uma maneira rápida de
determinar se o conceito é viável e ter uma ideia de como o jogo final ficaria.
Você também pode explorar várias direções de arte com mockups de miniaturas simples.
Esses mockups teriam formas simplificadas e se concentrariam mais na aparência geral,
ângulo da câmera, tamanhos de objetos, paleta de cores e contraste. Usar miniaturas é uma
ótima maneira de apresentar diferentes abordagens à equipe para teste e iteração.
— Os jogos para celular devem ser mais brilhantes e ter maior contraste para serem visíveis
na luz do sol e em telas menores.
Considerações técnicas
—. Ambiente:.Você vai criá-lo com Tilemap ou Sprite Shapes? Ou você quer colocar sprites
de plataforma na cena manualmente? Você pode pintar seu mockup para imitar a
aparência dessas ferramentas para que você possa usar os mockups diretamente
no seu jogo.
Aproveite o tempo neste estágio para criar ativos que sejam o mais próximo possível do
que eles parecerão no jogo final. Isso permite que você passe do conceito para a
produção do jogo mais rapidamente.
Uma comparação entre a arte conceitual original e a versão final de Dragon Crashers. Você pode ler sobre o processo de criação da arte para a demo neste post do blog .
Escolha.o.
perspectiva.
Existem diferentes perspectivas, ou visualizações, disponíveis para um jogo 2D. O termo geral para
opções de perspectiva é projeção gráfica, que se refere a um método de projetar um mundo 3D em
um plano 2D. Você pode ver as diferentes perspectivas ilustradas aqui.
Imagem da Wikipédia
Projeções paralelas
Com esses tipos de projeções, as linhas que são paralelas no mundo 3D também são paralelas
quando projetadas em uma superfície 2D. Além disso, elas não têm pontos de fuga, o que
significa que os objetos têm o mesmo tamanho, não importa a distância da câmera. Isso é útil em
jogos porque você não precisa dimensionar seus ativos ou desenhá-los em tamanhos diferentes.
Este diagrama ilustra como a projeção ortográfica funciona. Note que todos os raios de projeção da câmera são paralelos entre
si e perpendiculares ao plano da imagem.
Projeção primária
Na perspectiva de cima para baixo, a câmera aponta para baixo, perpendicular ao chão.
Não há muitos jogos top-down verdadeiros, e essa perspectiva é frequentemente confundida com
projeções ¾ ou isométricas. Top-down funciona melhor para jogos de tiro, mas não é a visão mais
interessante para ver personagens humanos.
Projeção axonométrica
A maioria dos jogos antigos chamados de isométricos são, na verdade, dimétricos. Ângulos de
projeção isométrica não ficam ótimos em pixel art, e é por isso que não há muitos jogos com
projeção isométrica verdadeira.
Dimetric.projection:.Esta perspectiva usa projeção onde dois ângulos são idênticos, com as
linhas X e Y anguladas em 26,6 graus. Dimetric tem sido a opção mais comum porque parecia
melhor no hardware mais antigo, onde as linhas formavam uma proporção de pixel clara de 2:1.
Você pode usar esta projeção para mostrar mais ou menos da superfície superior.
Projeção oblíqua
Projeção em perspectiva
A projeção em perspectiva usa pontos de fuga para replicar a maneira como objetos mais
distantes parecem menores. Um ponto de fuga é um ponto no plano de um desenho em
perspectiva onde as projeções bidimensionais ou desenhos de linhas mutuamente
paralelas no espaço tridimensional parecem convergir.
Como você escolhe a perspectiva correta para seu projeto? A jogabilidade determina
o estilo de arte ou vice-versa? Na maioria dos casos, os desenvolvedores escolhem um
estilo de arte e projeção de câmera com base em suposições feitas quando a ideia para
seu jogo se cristaliza. Será uma decisão baseada em muitos critérios, incluindo:
— Jogabilidade e gênero
— Plataforma de destino
— Legibilidade da cena – por exemplo, escolher um ângulo de câmera mais alto para melhor
visibilidade do personagem e das unidades inimigas
Você também pode basear seu jogo em um estilo de arte. Por exemplo, imagine um
jogo baseado em hieróglifos egípcios antigos. Neste caso, o tema da arte
determinará algumas regras de câmera e jogabilidade, a saber, que deve ser um jogo de
visão lateral com uma perspectiva primária.
Lembre-se, no final, sua projeção não precisa ser 100% precisa e seguir todas as regras
do mundo real rigorosamente, como é o caso no espaço 3D. O mais importante é
que ela precisa ter uma boa aparência e melhorar a jogabilidade.
Resolução.de.
seus.ativos
As ferramentas 2D do Unity evoluíram de um editor criado inicialmente para jogos
3D. Como resultado, há alguns recursos exclusivos. Por exemplo, sprites 2D na Cena
não estão vinculados firmemente à resolução da tela. Sprites no Unity são texturas
desenhadas em uma malha e são facilmente escaláveis. A câmera em jogos 2D
também é escalável e pode aumentar e diminuir o zoom conforme você quiser.
Ao desenhar ativos de jogo, o tamanho do pixel é consistente, e a imagem parece ótima porque está sempre restrita à grade de
pixels. No entanto, no Unity, os sprites podem ter uma resolução diferente. O nível de zoom da câmera também afetará a aparência final.
Para PCs, a maioria dos gamers de desktop usa full HD (1920x1080), enquanto
apenas 2% têm telas 4K, de acordo com uma pesquisa da Steam . Para laptops
especificamente, há muitos usuários que jogam em resoluções mais baixas, como 1366x768.
Você também pode considerar oferecer suporte a telas ultra-amplas, testando proporções
de tela como 21:9 para garantir que a câmera não exibirá áreas indesejadas do seu
nível.
Para consoles, 4K é mais comum devido à alta taxa de adoção de TVs 4K.
O Nintendo Switch oferece resolução de 1280x720 no modo portátil e até 1920x1080 quando conectado
a uma tela externa via HDMI.
Como você pode ver, o intervalo de resolução pode ser muito amplo. Se você está procurando suporte
para um dispositivo específico, este artigo abrangente pode ajudá-lo a encontrar a resolução alvo
adequada.
Para atingir Full HD ou 4K, tenha em mente algumas práticas recomendadas (essas regras não se
aplicam à pixel art):
— Mantenha uma resolução para todos os ativos e reduza a escala posteriormente, se necessário, para
oferecer suporte a dispositivos de baixo custo
Não aumente a escala da arte raster porque isso pode resultar em pixelização e desfoque,
diminuindo a qualidade visual. Sempre comece com a resolução mais alta suportada e, em seguida, diminua
a escala da resolução da arte ao exportar de um aplicativo gráfico.
Você descobrirá mais sobre como fazer isso na seção sobre como trabalhar entre as ferramentas DCC
e o Unity, ou pode tentar usar o dimensionamento do Variant Sprite Atlas .
Um truque útil é desenhar sua arte com o dobro do tamanho que você precisa, e então escalá-la para
50% quando você exportar para o Unity. Essa técnica fará seus sprites parecerem polidos e nítidos, e as
linhas do pincel não parecerão tão tremidas. Não exagere nos detalhes, já que a arte será reduzida. Esse
é um bom truque para esconder as pequenas imperfeições resultantes de arte desenhada à mão. Claro, se
você quer um estilo visual desenhado à mão para seu jogo, então não tente isso.
Depois de escolher a resolução, teste a aparência da sua arte na visualização do jogo para ver como ela
aparecerá nos dispositivos de destino.
Você pode facilmente visualizar a aparência do jogo em diferentes proporções e resoluções na Visualização do jogo.
Use a grade e as unidades do Unity para manter o posicionamento e a aparência consistentes dos
seus sprites, bem como para calcular o zoom da câmera e os tamanhos dos objetos.
Uma unidade Unity é visualizada pela grade na visualização Scene . Suponha que 1 unidade Unity seja
igual a 1 metro . Defina seus tamanhos de base primeiro e mantenha-os consistentes em
seu jogo .
Comece com o tamanho do seu personagem jogador. Mantenha a altura do personagem jogador entre 0,5
e 2 unidades. Se estiver usando Tilemap, defina o tamanho do tile para 1 unidade.
Personagens e objetos que são muito pequenos ou grandes em comparação com outros
elementos visuais em um jogo levarão a números de transformação estranhos e problemas com
cálculos de física.
Depois de estabelecer os tamanhos dos seus objetos base na cena principal (personagem
do jogador, inimigos, itens colecionáveis, perigos de nível), escolha seu nível de zoom definindo a
propriedade size da câmera ortográfica . Depois disso, verifique o valor do tamanho da câmera .
Quando você multiplica esse valor por 2, você obterá o tamanho vertical da câmera em unidades
Unity .
O tamanho da câmera ortográfica é expresso em unidades que expressam o tamanho vertical da câmera do centro para o topo.
Se o tamanho da câmera for igual a 5, sua altura será igual a 10 unidades. Por exemplo, se você almeja
resolução 4K, então a altura da tela (ou câmera) será 2160 pixels. Com um cálculo simples, você pode
determinar quantos pixels por unidade (PPU) sua arte precisa:
2160.:.10.=.216.
Então, cada sprite no seu jogo precisa ter em torno de 216 PPU para ter uma boa aparência em uma
resolução nativa de 4K.
Esse é um exemplo simples. Se você quiser que sua câmera faça zoom in e out, você precisará
levar isso em conta. Se você definir a porcentagem máxima de zoom para o tamanho 3 na visualização
Ortográfica, o PPU precisa ser 360 (2160 : (3 *2)) .
Se você estiver usando animação esquelética, defina a resolução dos sprites um pouco mais alta
do que o PPU sugerido. Fazer isso é necessário porque as malhas do esqueleto são rotacionadas,
esticadas e distorcidas, às vezes ao extremo, o que pode produzir resultados que parecem ruins.
Procure uma resolução menor quando a câmera estiver com zoom.
Dica:.Quando você define o valor PPU do seu jogo, aplique uma grade no seu software gráfico para
referência. Isso é útil ao usar Tilemap porque você terá o tamanho do tile em pixels e poderá ajustar a
uma grade.
Você não precisa ser rigoroso com esses números. Muitas vezes, você pode economizar memória
usando uma resolução de sprite um pouco menor do que a sugerida. Corte elementos que não
sejam essenciais, como sprites de fundo.
Além disso, teste seu jogo em dispositivos para verificar como ele se parece. Em muitos casos,
os benefícios de usar ativos de alta resolução não são aparentes. Em vez disso, você pode
alocar esse tempo de desenho e memória do dispositivo para outros elementos de jogo mais
essenciais, como os personagens principais, efeitos visuais ou IU. Em dispositivos móveis, o tamanho
do jogo é crucial, então verifique quais ativos podem ser reduzidos e tenha em mente as
limitações de memória. Leia mais sobre resolução de ativos 2D nesta postagem do blog.
Atlas de Sprites
Use o Sprite Atlas para consolidar diversas texturas em uma única textura combinada.
O Unity pode então chamar essa única Texture para emitir uma única chamada de draw em vez
de várias. As Textures compactadas são acessadas todas de uma vez, resultando em menor sobrecarga
de desempenho.
Para construir um novo Sprite Atlas, clique com o botão direito na janela Project (ou selecione
o menu Assets na barra de ferramentas) e escolha Create.>.2D.>.Sprite.Atlas . Certifique-se de dar a
ele um nome descritivo . Então, na opção Objects for Packing, selecione os sprites que você quer
incluir, ou inclua a pasta inteira . A opção Include in Build deve ser marcada por padrão . Agora você
tem seu primeiro Sprite Atlas .
Use um Variant Sprite Atlas para reduzir sprites para dispositivos específicos.
Crie um Master Sprite Atlas como acima, então altere seu Type para Variant no
Inspector (veja a imagem abaixo).
Um Variant Sprite Atlas não contém sprites em si. Ele depende de um Master
Sprite Atlas, que você pode escolher no campo Master Atlas. Dimensione este
atlas e todos os seus sprites escolhendo um valor no campo Scale Value, entre o intervalo de 0,1 a 1.
Em um projeto que inclui um Atlas de Sprite Mestre e um Atlas de Sprite Variante, se ambos tiverem
a opção Incluir na Construção marcada, a Textura usada pelos Sprites mútuos pode vir de
qualquer Atlas de Sprite (consulte o Cenário 3 na seção Resolvendo diferentes cenários do Atlas
de Sprite da documentação do Unity).
Para carregar automaticamente Texturas de Sprite do Atlas Variante em vez do Atlas Mestre,
habilite Incluir na Construção somente para o Atlas Variante e desabilite-o para o Atlas Mestre. A
construção então carrega automaticamente o Atlas Sprite Variante em vez do Atlas Mestre no tempo
de execução.
A arte criada em software baseado em vetores, como Adobe Illustrator ou Affinity Designer
pela Serif, não é limitada pela resolução. Esta é uma vantagem significativa porque você pode alterar o
tamanho dos seus ativos de arte a qualquer momento, sem se preocupar com configurações
de resolução incorretas.
Você ainda precisará exportar sua arte baseada em vetor para o Unity como um arquivo PNG . É o
mesmo fluxo de trabalho de exportação que para arte raster ou pixel .
Arte vetorial feita no Affinity Designer – o lado esquerdo desta ilustração mostra a visualização vetorial no aplicativo, e o lado direito
mostra a visualização em pixels após a exportação.
Você faz um grande trabalho na sua arte antes de movê-la para o Unity. Você trabalha duro para
fazer todos os personagens, elementos, adereços e arte de fundo tão bonitos e fiéis à sua
visão quanto possível – então é natural que você queira colocar tudo no Unity o mais rápido
possível.
Evite exportar cada camada uma por uma como um arquivo PNG porque isso levará muito
tempo. Em vez disso, siga estas dicas para exportar seus sprites de jogo de forma eficiente de
diferentes softwares gráficos.
De.Adobe.Photoshop
Exporte e salve camadas como arquivos individuais usando uma variedade de formatos,
incluindo PSD, BMP, JPEG, PDF, Targa e TIFF. As camadas são nomeadas automaticamente
conforme são salvas – defina opções para controlar a geração de nomes.
2. Em Destino, na caixa de diálogo Exportar camadas para arquivos, clique em Procurar para
selecione um destino para os arquivos exportados. Por padrão, os arquivos gerados são salvos na
pasta de amostra como o arquivo de origem.
3. Se você quiser que seus sprites tenham um prefixo de nome de arquivo comum, insira-o no campo
de texto, por exemplo, tile_wood01 .png, tile_bricks01 .png e assim por diante.
4. Para exportar somente as camadas visíveis no painel Camadas, selecione Somente camadas visíveis.
5. Escolha PNG-24 como um Tipo de Arquivo. Você não precisa incluir um perfil ICC, então
desmarque isso.
7. Clique em Executar e, após uma breve espera, os sprites deverão ser exportados para a pasta
que você especificou.
8. Use estas etapas para exportar uma quantidade limitada de camadas rapidamente. Observe que todas
camadas são exportadas separadamente. Este método não leva em conta grupos de camadas,
então se você tem um personagem ou objeto que consiste em múltiplas camadas, mescle-as antes
de exportar.
Vamos ver como exportar sprites com múltiplas camadas do Photoshop . Requer mais configuração, mas
essa abordagem permite maior controle sobre as imagens exportadas .
Para começar, você precisará dos nomes das camadas ou grupos de camadas dos quais deseja
gerar sprites. Por exemplo, a imagem abaixo mostra um sprite de um barril consistindo de um
mapa normal e um mapa de máscara. Cada sprite está em uma pasta separada que foi salva como um
arquivo PNG.
Uma vantagem desse método é que se você alterar qualquer camada ou pasta marcada para exportação,
o recurso de imagem será exportado em segundo plano automaticamente.
Especifique a pasta para cada sprite adicionando seu nome e uma barra antes do nome da
camada. Neste caso, para agrupar todos os três sprites de barril em uma pasta, você adicionaria
“barrel/” antes dos nomes das camadas.
Exportando.de.Affinity.Photo.ou.Affinity.Designer
Tanto o Affinity Photo quanto o Affinity Designer fornecem um modo dedicado para
exportação, chamado Export Persona . Vamos ver os passos para usá-lo .
Mude para Export Persona clicando em seu ícone no canto superior esquerdo da barra de
ferramentas do aplicativo, conforme visto na imagem abaixo.
Para exportar um sprite, crie uma fatia de uma camada ou grupo de camadas . Mude para a aba Layers
à direita, selecione uma camada para exportar e clique no botão Create Slice .
Mude para a aba Fatias, selecione as fatias a serem exportadas e certifique-se de que a predefinição
Exportar esteja definida como PNG único para todas as fatias, conforme visto na imagem a seguir.
Clique em Export Slice e escolha uma pasta de destino quando solicitado. Você pode
economizar tempo exportando os sprites diretamente para a pasta Assets no seu projeto Unity.
Após escolher uma pasta de destino, a opção Contínuo fica disponível, o que permite
exportar fatias sempre que você alterar uma camada.
Escolha uma subpasta para seu sprite na seção Path . Neste exemplo, todos os sprites
barrel estão na subpasta “barrel” . PNG é o formato de arquivo, e a escala de resolução é
definida em 1x, o que significa nenhuma escala, então os sprites são exportados em 100%
do seu tamanho . Você também pode gerar vários tamanhos de uma vez clicando no botão “+” .
Para jogos multiplataforma, escolha tamanhos adicionais para seus sprites que
podem ser usados ao construir seu projeto para outros dispositivos. Por exemplo,
escolha 2x para dimensionamento para obter sprites “Retina”.
Outro botão “+” na parte inferior da janela expandida permite que você adicione
formatos de arquivo adicionais se quiser exportar arquivos JPG junto com os sprites PNG.
Exportando.do.Krita
— Ignorar camadas invisíveis: isso é útil quando você deseja excluir alguns
sprites da exportação desativando sua visibilidade.
Exportar para o formato de arquivo PNG é o fluxo de trabalho mais conveniente para sprites, mas você
também pode importar arquivos PSD diretamente para o Unity. Por padrão, isso achatará as camadas
PSD em uma imagem.
Este método é conveniente para usar em sprites de arte de fundo. Edite e pinte camadas e,
quando você salvar o arquivo, as alterações ficarão instantaneamente visíveis no Editor. Então você
terá seu arquivo de origem PSD diretamente no projeto Unity, e o arquivo pode ser incluído no controle
de origem.
O pacote 2D PSD Importer da Unity oferece a opção de importar camadas como sprites separados.
Este pacote foi projetado para uso com animação 2D, mas você pode usá-lo para importar vários sprites
regulares contidos em um arquivo PSD. Você também pode fazer animações quadro a quadro. Saiba
mais sobre como usar este pacote na seção Animação 2D ou nesta postagem do blog.
Design de nível
Há muitas maneiras de criar protótipos de níveis, então escolha os métodos que melhor se
adaptam ao seu estilo criativo e fluxo de trabalho.
Esboçar ideias no papel provavelmente sempre será popular porque é simples, direto,
portátil e barato. Nos primeiros dias, também era uma necessidade comunicar a colocação
de peças e elementos do jogo para a equipe.
Jogos modernos como Hollow Knight usam papel para design de níveis e conceito de arte. Veja o
processo neste artigo do Rockpapershotgun
Essa foi a melhor maneira de criar níveis por muitos anos e ainda é muito útil.
No entanto, agora você pode testar ideias mais cedo e mais vigorosamente, esboçando-as
no Unity. Vamos dar uma olhada nas ferramentas disponíveis.
Boxe branco
White boxing, um termo bem conhecido do design de níveis 3D, envolve colocar cubos
brancos simples para testar ideias de design de níveis rapidamente. A razão pela qual os
designers usam white box é para mapear ideias para o fluxo do jogo sem nenhum detalhe que distraia.
Este método também pode ser aplicado a gráficos 2D usando figuras geométricas 2D ou
outras ferramentas de prototipagem.
No boxe branco, o foco deve estar apenas nas coisas com as quais o jogador irá interagir,
como o chão, inimigos, perigos de nível e pickups. Todas essas coisas podem ser
feitas a partir das formas mais simples, então codificadas por cores para distingui-las
mais facilmente. Por exemplo, inimigos e outros perigos podem ser coloridos de vermelho,
pickups de verde, interruptores de azul e assim por diante.
Comece com os ativos 2D padrão disponíveis no Unity, que vêm em formas geométricas
simples.
Clique com o botão direito na janela Project (ou clique no menu Assets na barra de ferramentas) e
escolha Assets.>.Create.>.2D.>.Sprites . Todas as formas vêm com formas de colisão
predefinidas, então você só precisa adicionar um componente Polygon Collider 2D a uma forma
de sprite para fazê-la ser afetada pela gravidade ou colisões .
Os sprites selecionados serão criados na pasta que está aberta na janela Projeto.
Use formas diferentes para propósitos diferentes. Por exemplo, use uma cápsula para seu jogador,
círculos para pickups, hexágonos para inimigos e quadrados para o chão ou paredes. Tinja cada
categoria de sprite com uma cor diferente com a propriedade de cor disponível no Sprite Renderer.
Para que os sprites usem colisões de física 2D, adicione um componente Collider 2D
correspondente que corresponderá à forma geral do objeto junto com um Rigidbody 2D.
Escolha o tipo de corpo Dinâmico para que o corpo rígido reaja à gravidade, forças ou colisões.
Para posicionamento preciso, encaixe os sprites na grade mantendo Ctrl pressionado enquanto os
move. Isso os moverá em incrementos de 0,25 unidades.
Forma de Sprite 2D
2D Sprite Shape é uma ferramenta que permite que você crie caminhos e sprites de ladrilhos
ao longo deles. Esses caminhos funcionam de forma semelhante à conhecida ferramenta de
caneta usada em softwares gráficos. São curvas de Bézier que podem ser editadas
diretamente na cena e, opcionalmente, fechadas e preenchidas com textura de ladrilho.
O Sprite Shape é um recurso de prototipagem útil no Unity porque torna mais eficiente a criação
e edição de novos formatos de sprite.
Se você escolher criar seu projeto 2D com o Template 2D, então o Sprite Shape é instalado por
padrão. Caso contrário, você pode instalá-lo usando o Package Manager.
Para criar uma nova forma de Sprite, clique no menu GameObject, 2D.Object.>.
Sprite.Shape e selecione Forma Aberta ou Forma Fechada.
Clique com o botão esquerdo em qualquer parte do Sprite Shape para adicionar ou
excluir pontos com a tecla delete . Ao selecionar um ponto, você pode alterar seu modo
selecionando um dos três botões Tangent Mode:
—. Linear: Não cria curva, com linhas retas em ambos os lados dos pontos
—. Contínuo: Cria uma curva ao redor do ponto com alças voltadas para direções
opostas
—. Quebrado:.Cria uma curva ao redor do ponto com alças que podem se mover
independentemente
Você também pode selecionar como os cantos ao redor dos pontos ficam. A ferramenta de
encaixe é outra opção útil que encaixa os pontos na grade.
Seguindo esses passos, você pode criar Formas de Sprite que podem interagir umas
com as outras e ser facilmente modificadas através de seus Inspetores.
Mapas de blocos
O recurso Tilemap é ótimo para prototipagem rápida. O Tilemap oferece uma maneira
de criar um mundo de jogo usando pequenos sprites, chamados tiles, colocados em
uma grade. Em vez de dispor um mundo de jogo que é uma grande imagem, você pode
dividi-lo em pedaços semelhantes a tijolos que são repetidos por um nível inteiro.
Tilemaps podem ajudar a economizar memória e poder de CPU porque tiles que não
são visíveis na tela podem ser desabilitados. Uma ferramenta de pincel torna eficiente
pintá-los em uma grade, e eles também podem ser programados para usar algumas regras
de pintura. Eles vêm com geração automática de colisão para testes e edições eficientes.
Uma representação visual do background e dos sprite tiles de um jogo retrô de 8 bits que são carregados na VRAM. O console mantém os backgrounds
e sprites carregados em páginas separadas.
Instale amostras, junto com o 2D Tilemap Extras para ver exemplos usando os scripts que
vêm com o pacote. Você pode ler mais sobre os Scriptable Brushes e Scriptable Tiles
incluídos no pacote na documentação do Unity.
Depois que ambos os pacotes estiverem instalados, abra a janela Tile Palette em Window.>.
2D.>.Paleta.de.Azulejos .
Esta janela conterá todos os blocos e ferramentas para ajudar você a pintar ou editar Tilemaps.
Crie uma nova Paleta clicando no botão Criar Nova Paleta . Uma janela suspensa com opções
aparecerá . Dê um nome à paleta, defina suas opções, clique em Criar e salve-a em uma pasta
selecionada .
Agora, adicione tiles à paleta. Arraste um sprite, textura ou Tile Asset para a janela
Palette. Use uma das Sprite Shapes simples que você criou anteriormente e
coloque-a na parte vazia da janela. Escolha um arquivo no qual criar o asset. Agora
você deve ver seu sprite na grade da paleta.
Agora, crie um Tilemap para pintar os tiles. Clique no item de menu Gameobject.>.
2D.Objeto.>.Mapa de blocos.>.Retangular .
Criando um Tilemap
Você criou uma Grid e um Tilemap dentro dela. Renomeie o Tilemap para algo
mais descritivo. A Grid pode conter vários Tilemaps, e é possível ter várias Grids
por cena, por exemplo, com tamanhos de células diferentes.
Por enquanto, deixe todas as configurações padrão do componente Grid.
Com seu Tilemap e Tile em uma paleta, você está pronto para começar a pintar. Clique na
ferramenta pincel na barra de ferramentas da janela Palette e selecione um tile para pintar.
Em seguida, você pode criar um protótipo para um nível . Adicione um Tilemap Collider
2D ao Tilemap para física . Isso adicionará colisores a cada um dos tiles com base no
tipo de colisor definido no Tile Asset .
Vamos dar uma olhada nas diferentes ferramentas da Paleta (os atalhos do teclado estão indicados entre colchetes).
—. Seleção.(S): Clique para selecionar um bloco ou arraste para selecionar blocos dentro de
uma área retangular.
—. Preencher.Seleção.(U): Arraste para preencher uma área retangular usando um bloco selecionado.
—. Preencher.(G): Preencher uma área com um ladrilho (a área precisa ser delimitada com outros ladrilhos).
Com essas ferramentas sozinhas, você pode pintar e editar tiles de forma eficiente. Além disso, o
Tilemap Extras Asset fornece scripts úteis como Rule Tile.
Regra de ladrilho
Este é um bloco com script que reconhece o ambiente e seleciona a imagem apropriada,
por exemplo, um bloco de chão com grama na parte superior e uma sombra na parte inferior.
O pacote 2D Tilemap Extras vem com uma amostra de Dungeon Rule Tile localizada em
Assets.>.Samples.>.2D.Tilemaps.Extras.>.“version.number”.>.Dungeon.Rule.
Tile.>.Tiles . Arraste-o para a Paleta de Tiles para começar a pintar .
Rule Tile reconhece automaticamente onde estão os tiles adjacentes e onde deve haver bordas.
Ele escolhe o sprite apropriado para você, então você não precisa selecionar tiles diferentes para
pintar as bordas.
Pintura de Tilemaps
O Rule Tile Inspector fornece uma lista de regras para qual sprite escolher com base nos tiles
adjacentes. Há uma matriz e um sprite no lado direito de cada regra.
O sprite será usado quando houver peças vizinhas em todos os lados para onde as setas verdes
estiverem apontando.
Este é apenas um exemplo de como usar o Rule Tile . Você também pode substituir os sprites que
vêm com este exemplo ou criar um novo Rule Tile que corresponda às necessidades do seu jogo .
Você pode encontrar modelos de Tilemap prontos que estão disponíveis na comunidade e
na Asset Store. Alguns bons para conferir incluem TileMap Auto Rule da Pandaroo, 2D PixelArt –
Isometric Blocks da Devil's Work.shop, e Pixel Art Platformer e Pixel Art Top Down da Cainos.
Saiba mais sobre as práticas recomendadas do Tilemap neste vídeo e sobre como otimizar o
desempenho do Tilemap neste artigo .
O design baseado em grade ou ladrilho é bem adequado para um estilo visual 2D retrô,
especialmente quando você está usando pixel art. Também é ótimo para jogos de plataforma
horizontais de rolagem lateral, RPGs de cima para baixo e formas não orgânicas, como prédios e castelos.
Tiles individuais podem ser animados, por exemplo, adicionando uma cachoeira, uma tocha
acesa, um ventilador giratório e assim por diante. Você pode fazer declives com Tilemaps, mas
eles serão superfícies retas com ângulos como 45 ou 26,5 graus.
Quando você quiser um estilo mais orgânico e menos baseado em blocos, use o 2D Sprite Shape .
Com esta configuração, você não está limitado a uma grade ou ângulo específico. Você pode
fazer qualquer forma que quiser usando curvas. Terrenos, colinas, campos gramados e superfícies
lisas são todos adequados para Sprite Shape, que empresta uma aparência moderna às
suas cenas em comparação ao estilo pixel-art mais nítido.
À esquerda, Skul: The Hero Slayer, da SouthPAW Games, é um jogo baseado em Tilemap, enquanto Oddmar, da Mobge LTD, à direita, é um
jogo baseado em spline.
Níveis e elementos criados com Tilemaps ou Sprite Shapes são fáceis de editar depois.
Dependendo do seu estilo visual, você pode usar ambos os sistemas no seu jogo.
Tanto Tilemaps quanto Sprite Shapes podem ser modificados durante o tempo de execução
para criar novas e empolgantes possibilidades de jogo. Por exemplo, Tilemaps podem ser
destrutivos, e Sprite Shape pode ser transformado – as possibilidades são infinitas. Leia mais
sobre as opções nos documentos Tilemap API e SpriteShape API .
Para a maioria dos jogos 2D, você vai querer configurar sua câmera para o modo ortográfico . É
a escolha padrão para projetos 2D porque as linhas de uma dimensão são paralelas, e você
trabalha apenas em duas dimensões . O modo ortográfico funciona para todos os estilos –
jogos de pixel art, quebra-cabeças, isométricos 2D, de cima para baixo, jogos de plataforma .
Embora jogos 2D não tenham profundidade real, a ilusão de profundidade pode ser criada
usando o efeito parallax . O efeito parallax rola múltiplas camadas no fundo e no primeiro
plano em velocidades diferentes quando a câmera se move .
A intenção é imitar a percepção de profundidade humana, em que objetos mais distantes
parecem se mover mais lentamente do que aqueles mais próximos de nós.
Em 2D, isso geralmente é feito com um script que move camadas com uma porcentagem da
velocidade de movimento da câmera. Requer alguma configuração manual para ajustar a velocidade
de cada camada de parallax.
Configuração de câmera de perspectiva em Tails of Iron por Oddbug Studio. Aprenda como eles criaram a iluminação em seu jogo com Unity .
Se o modo ortográfico é adequado para todos os estilos de jogos 2D, por que usar o
modo perspectiva?
Um motivo é que isso oferece acesso a efeitos de paralaxe prontos para uso, já que, como o nome
sugere, uma câmera Perspective usa um ponto de vista de perspectiva. Você não precisa usar
scripts para manipular a rolagem de camadas de paralaxe. Em vez disso, você posiciona elementos
mais distantes da câmera no eixo Z e os dimensiona para considerar a perspectiva com base em
sua distância relativa da câmera.
Sprites parallaxed não se movem com a câmera a cada quadro, então objetos de fundo
podem ser marcados como estáticos para loteamento. Adicionar alguns objetos 3D à sua cena
pode fornecer mais profundidade também.
O modo ortográfico com efeitos de paralaxe com script requer que você configure as
velocidades de rolagem em todas as camadas manualmente. O efeito de profundidade pode
quebrar se as camadas tiverem velocidades de rolagem incorretas, e editar um nível de paralaxe requer codificação adicional.
Suponha que você esteja fazendo um jogo estilo Metroidvania com cenas que incluem
múltiplos pontos de entrada. Neste caso, o efeito de paralaxe pode quebrar porque a câmera
pode começar em uma posição diferente no eixo X de onde você editou os elementos de
paralaxe.
Uma vez configurada, a câmera Perspective funcionará para efeitos de parallax. A única
desvantagem é que você precisa dimensionar sprites conforme os move ao longo do eixo Z.
Além disso, a abordagem permite que a cena seja dividida em cenas menores para
carregamento aditivo, como um sistema de sala que permite carregamento dinâmico do mundo.
A câmera que você escolher não impacta o processo de criação de arte, mas
determina como os níveis são configurados. E, se eles forem configurados corretamente,
a paralaxe ortográfica e de perspectiva parecerão as mesmas para o jogador.
Para resumir, um modo ortográfico é a melhor escolha na maioria dos casos, exceto
quando você estiver usando rolagem avançada e parallax . Nesse caso, vá com o
modo perspectiva .
Misturando 2D e 3D
Introduzir ativos 3D no fundo de um jogo 2D pode adicionar uma boa profundidade a uma cena sem comprometer a
jogabilidade. As imagens de cima e do meio são do próximo jogo estilo Metroidvania Aeterna Noctis, da Aeternum
Game Studios S .L . A imagem de baixo é de Last Night da Odd Tales .
Empilhamento de câmeras
Pelo menos duas câmeras são necessárias na cena para empilhamento. Escolha qual
delas será a Base Camera para a imagem que você quer renderizar primeiro, e quaisquer
câmeras adicionais precisam ser definidas como Overlay.
A Base Camera precisa saber quais câmeras se sobrepõem no topo e em que ordem.
Para fazer isso, vá para a opção Stack e selecione uma câmera para sobrepor com o
botão +. Altere a ordem de renderização das Overlay Cameras conforme necessário,
arrastando-as para cima ou para baixo na lista.
Use camadas para definir quais objetos são renderizados por cada uma das câmeras. Por
padrão, as câmeras renderizam todas as camadas, mas você pode alterar isso
selecionando quais camadas são renderizadas pela câmera na opção Culling Mask em um componente Camera.
Agora, selecione os GameObjects que você quer que a câmera renderize, e altere a
camada deles para corresponder à definida anteriormente. Dessa forma, os objetos são
categorizados para serem renderizados por câmeras diferentes, como um fundo 3D e camadas de plataforma 2D.
Cinemachine para 2D
Depois de selecionar o tipo de câmera, você precisará configurá-la para acompanhar o gameplay.
O sistema Cinemachine da Unity fornece a funcionalidade para fazer isso e muito mais, como
confinar a câmera a limites de nível, configurar transições de câmera, ruído e assim por diante.
Esta seção destaca algumas das principais funcionalidades do Cinemachine para jogos 2D.
O Cinemachine não cria novas câmeras Unity em uma cena. Em vez disso, quando uma nova Câmera
Virtual Cinemachine ou vcam é adicionada a uma cena, o CinemachineBrain
O componente é adicionado à câmera principal, junto com um novo GameObject com o nome padrão
CM vcam .
as vcams com keyframes, misturam ou fazem transição suave entre as câmeras, ou criam uma
combinação das duas para animar uma câmera enquanto faz a transição para outra. Toda a animação
será processada pelo Cinemachine Brain e aplicada à câmera principal – pense nisso como um poderoso
sistema de animação que aciona sua câmera principal.
Para criar uma câmera virtual 2D, clique em Cinemachine.>.Create.2D.Camera . Isso criará uma
configuração de Câmera Virtual para um ambiente 2D . Se for sua primeira Câmera Virtual na cena, ela
também adicionará um Componente Brain Cinemachine à sua câmera principal .
Expanda o campo Propriedades do corpo para encontrar opções úteis para modificar como
a câmera virtual segue seu alvo, como deslocamento, amortecimento, zonas mortas e suaves.
Experimente essas opções durante o Modo de Reprodução, e as alterações serão salvas
se você marcar a opção Salvar durante a reprodução.
Agora o frustum da câmera não sai da caixa delimitadora do colisor. Para mais detalhes,
confira a documentação do Cinemachine Confiner 2D .
Ordem de sorteio
Em um jogo 2D, todos os sprites e objetos têm a mesma profundidade. Como você pode classificá-los para
que alguns apareçam na frente dos outros?
O Unity classifica os Renderers de acordo com uma ordem de prioridade que depende de seus tipos e usos.
Você pode especificar a ordem de renderização dos Renderers usando sua Render Queue . Em geral, há duas
filas principais: a fila Opaque e a fila Transparent .
Os renderizadores 2D estão principalmente na fila Transparente e incluem os tipos Sprite Renderer,
Tilemap Renderer e Sprite Shape Renderer .
Renderizadores 2D dentro da Transparent Queue geralmente seguem uma ordem de prioridade . Quando dois
ou mais objetos ocupam o mesmo espaço, o Unity percorre essa lista e verifica qual objeto deve ser
desenhado no topo . Quando há um empate, e ambos os objetos têm o mesmo valor, o próximo critério na
lista é avaliado . A ordem de prioridade é:
4. Grupo de classificação
5. Material/Sombreador
Quando todos os valores acima são os mesmos para ambos os objetos e um desempate é necessário,
esse processo deve escolher qual deles renderizar em cima. Não é uma solução ideal, então certifique-
se de definir uma ordem de classificação distinta usando Sorting Layers e Sorting Groups.
Camadas de classificação
O critério de classificação mais importante é Sorting Layers . Todos os Renderizadores 2D têm essa opção,
e é a primeira coisa que você precisa configurar . Há uma camada de classificação padrão que você pode editar
abrindo Project Settings e especificando as opções Tags e Layers .
Adicione, exclua ou altere a ordem arrastando a alça à esquerda das Camadas. Camadas
que estão mais altas na lista são renderizadas primeiro e aparecerão mais distantes da
câmera.
Evite.criar.muitas.camadas.de.classificação
Por exemplo, se você estiver criando um jogo isométrico e planeja ter tochas que usam luzes
2D, as tochas afetarão todo o ambiente ou apenas as paredes?
Os personagens serão afetados ou serão desenhados na frente da luz? Você precisará de
uma Camada de Classificação apenas para os objetos que receberão luz? Tenha esses tipos de
perguntas em mente ao editar Camadas de Classificação e aprenda mais sobre o planejamento
de iluminação na seção Luzes 2D .
Tenha cuidado ao usar muitas Camadas de Classificação, o que pode fazer com que
você perca a supervisão de todos os detalhes. Quando precisar classificar renderizadores
mais, use Ordem na Camada. Isso permite que você classifique objetos que estão na mesma camada facilmente.
Transparência.Classificação.Modo.
Você pode querer uma visão 3D falsa no seu jogo, como uma projeção axonométrica ou oblíqua
para um jogo isométrico, de cima para baixo, com um pouco de ângulo, ou uma projeção de
gabinete em jogos de luta. Se for o caso, você precisará classificar os renderizadores de
forma personalizada por Distância até a Câmera (ponto 3 na lista de prioridades de classificação acima).
Classificando sprites no eixo Y, o valor (X:0, Y:1) 1 diz ao Unity para seguir um vetor descendente (como em Vector2 .
para baixo) para os critérios de classificação. Os sprites no topo serão desenhados primeiro, e os de baixo
depois, tornando-os visíveis na frente.
Grupo de classificação
Mesmo se você seguir os passos anteriores e classificar no eixo Y, a aparência das partes do seu
personagem ainda poderá ser exibida incorretamente.
Partes dos caracteres que estão na mesma Camada de Classificação são misturadas entre dois caracteres.
Não é um bug. É assim que a classificação funciona. A classificação não sabe quais partes
pertencem a qual personagem se elas estão na mesma Camada de Classificação. Felizmente, o
Grupo de Classificação é o quarto critério na lista de prioridades de classificação. O Grupo de
Classificação é um componente que agrupa Renderizadores que compartilham uma raiz
comum para fins de classificação. Todos os Renderizadores dentro do mesmo Grupo de
Classificação compartilham a mesma Camada de Classificação, Ordem na Camada e Distância até a Câmera.
Ao usar personagens ou outros objetos que consistem em alguns sprites, coloque este script em seu
objeto Parent (o mais alto na hierarquia) e defina Sorting Layer e Order in Layer como em qualquer outro 2D
Renderer. Você pode ver um exemplo disto nesta sessão técnica do Unite Now .
Criando um Grupo de Classificação no GameObject pai para garantir que este objeto e seus objetos filhos sejam classificados
como um único elemento, evitando conflitos potenciais entre suas partes e outros sprites no jogo
Você também pode aninhar Grupos de Classificação. Se você tem armas consistindo de vários sprites que
você quer que sejam gerados aleatoriamente, coloque-os em Grupos de Classificação para que eles sejam
exibidos corretamente nas mãos dos personagens.
Dicas de otimização
— Considere usar Tilemaps quando sua cena consiste em muitos sprites. Isso
permite que você troque muitos Sprite Renderers (eles têm uma sobrecarga) por apenas um Tilemap
Renderer.
— Simplifique as malhas dos sprites usando a opção Contorno Personalizado no Editor de Sprites.
Animação 2D
A animação 2D pode ser a parte mais demorada e desafiadora do desenvolvimento de arte para um jogo.
Criar personagens animados impressionantes requer um conhecimento considerável de animação de
tempo, momentum, cinemática e muito mais. Polir cada quadro pode levar muito tempo, e armazenar e
exibir esses quadros requer muita memória.
Alterar o tempo ou qualquer parte de um personagem pode exigir que cada quadro seja redesenhado.
Historicamente, a animação 3D tem sido mais direta do que a 2D. Você cria um modelo 3D, monta-o
adicionando um esqueleto, configura pesos de ossos e o anima definindo quadros-chave entre os
quais o software interpola. Você faz ajustes editando os quadros-chave.
Felizmente, a Unity desenvolveu um conjunto de ferramentas que traz maior eficiência à animação
2D, de muitas maneiras imitando a facilidade direta do processo de animação 3D. O pacote 2D Animation
permite que você importe a arte do seu personagem diretamente do Photoshop para a Unity.
O elemento mais vital em um jogo é o personagem do jogador, então reserve um tempo para pensar no
design do personagem. Há alguns aspectos importantes a serem considerados durante o planejamento.
Perspectiva
A perspectiva que você escolher impactará como os personagens do jogo se parecem e são
animados. Na maioria das visualizações de jogo, os personagens podem ser desenhados de perfil. Uma leve
rotação para uma visualização de ¾ permite que mais características faciais sejam mostradas.
Ao usar uma perspectiva isométrica ou ¾ de cima para baixo, você pode criar uma visão semelhante, mas
com uma câmera inclinada um pouco do topo para mostrar detalhes faciais. Nessa perspectiva, o
personagem será desenhado voltado para várias direções. Dependendo do resultado desejado e do
orçamento, você pode escolher entre uma das três opções comumente usadas:
— 4 direções
— 6 direções
— 8 direções
Não importa qual você escolher, você terá que decidir se as animações voltadas para a direita ou
para a esquerda terão que ser viradas para a direção oposta. Neste caso, você precisará desenhar
respectivamente:
Se você estiver projetando um jogo tradicional de beat-'em-up de rolagem lateral, você pode simplesmente
usar uma direção de frente. Personagens se movendo para cima e para baixo parecerão estar dando
passos laterais.
No final das contas, cabe a você decidir se seu personagem ficará bem ou não no ambiente do jogo após
o teste. Sua visão é mais importante do que ter um ângulo de visão e perspectiva realistas.
Reskinning.personagens
Outro benefício do pacote 2D Animation é que vários personagens podem compartilhar o mesmo
esqueleto e animações. Depois de projetar, rigear e animar um personagem base, você pode simplesmente
trocar sua skin.
Economize tempo planejando com antecedência. Desenhe conceitos de todos os personagens que
compartilharão o mesmo esqueleto, então verifique se o esqueleto caberá em todos eles. Faça isso
desenhando um esqueleto em uma camada separada e sobrepondo-o em cada personagem.
Tenha em mente que a contagem de camadas deve ser a mesma para todos os personagens.
Observação: no Unity 2021 .1 e versões mais recentes, um novo recurso chamado Compartilhamento de esqueleto
simplifica esse processo.
Desempenho
A animação 2D esquelética requer mais poder de processamento do que uma abordagem quadro a
quadro, que é essencialmente sprite swapping . Uma boa dica de desempenho é instalar os pacotes
Burst e Collections do Unity do Package Manager . Isso melhorará o desempenho do tempo de execução
da deformação do sprite animado .
Por exemplo, com um jogo de aventura onde haverá dois ou três personagens na tela, você
pode ser menos conservador com os detalhes do personagem. Você terá o luxo de fazer ossos e
camadas adicionais, bem como IK avançado – olhos móveis, dedos e muito mais.
No entanto, um RPG ou jogo de tiro para dispositivos móveis com grandes batalhas e mais de 10
personagens deve ter rigs mais simples. Seria razoável, por exemplo, ter um osso por membro em vez de
dois, ou ter uma troca de sprite de rosto inteiro em vez de ter olhos se movendo em uma camada
diferente.
Ao projetar a arte do jogo, tenha cuidado ao planejar com antecedência quantas camadas você precisará e
como os personagens serão animados, porque é quase impossível alterar esses elementos mais tarde na
produção.
Geral.2D.animação.regras
Aqui estão algumas boas regras a serem seguidas ao criar um personagem que será manipulado e
animado mais tarde.
Um exemplo de pose de
personagem neutra: Pernas e
braços podem estar em qualquer
posição, mas devem estar
esticados. Esticar membros
dobrados causará alongamento de pixel.
— Deixe a resolução um pouco mais alta do que o PPU do seu jogo sugere. Embora a resolução
possa parecer boa em repouso, girar e esticar imagens pode causar pixelização.
— Se a Iluminação 2D for usada extensivamente no seu jogo e você quiser aproveitar ao máximo
os mapas normais, não pinte a luz e a sombra no seu sprite. Em vez disso, pinte algumas
sombras não direcionais. Essa técnica é chamada de oclusão de ambiente. Seu sprite
ficará melhor, mas evite usar qualquer luz direcional, como a luz do sol.
— As camadas das partes do corpo trocadas usando o recurso Sprite Swap devem ser
agrupados de acordo. Por exemplo, todas as camadas com posições de boca devem ser
colocadas em um grupo chamado “boca” no aplicativo de edição de imagem.
Agora que você sabe o que considerar durante o design, inicie seu aplicativo gráfico de
escolha e comece a pintar. Saiba mais sobre Sprite Swap visitando a página de documentação
aqui .
Após concluído, seu personagem precisa ser importado para o Unity. A maneira mais rápida de
importar é por meio do 2D PSD Importer. Isso importará todas as camadas do personagem como
sprites e as colocará exatamente como foram pintadas no aplicativo.
Se você estiver usando o modelo de projeto 2D no Unity, o importador já deve estar instalado.
Se não estiver, instale-o usando o Package Manager.
Importar para o Unity é o mesmo que com outros ativos. Salve o arquivo na pasta Assets ou
arraste-o para a janela Project.
O Inspetor de um personagem
— Importar oculto: esta opção importa todas as camadas de um arquivo PSB, incluindo
camadas ocultas.
— Mosaico: esta configuração só estará disponível se o Tipo de textura estiver definido como Múltiplo.
Ele cria sprites a partir de camadas importadas e os coloca em um atlas de texturas.
Deixe esta opção habilitada se você quiser manipular um personagem.
— Character Rig: Esta opção gera um Prefab de personagem com a mesma hierarquia de
camadas e posição do arquivo PSB. Isso deve estar em .
— Use Layer Grouping: Isso adiciona agrupamento de camadas do arquivo PSB. Ative-o para
agrupar partes de um personagem, como partes trocadas de sprites.
Após definir as opções, clique em Apply . Isso finaliza o personagem Prefab, que agora pode
ser arrastado para uma Scene .
Construindo um personagem
Para começar a montar um personagem, clique no botão Editor de Sprites no Inspetor para
acessar as Configurações de Importação de Sprites.
Criando.o.esqueleto
Comece fazendo o esqueleto do personagem. Escolha o botão Create Bone e clique com o botão
esquerdo na área da janela principal. O primeiro clique criará um centro de osso, e o segundo marcará
a localização da ponta do osso. Esta ferramenta encadeia e aninha ossos uns dentro dos outros.
Se você quiser alterar o posicionamento do osso, pressione o botão direito do mouse e clique com o
botão esquerdo onde você quer que o novo osso seja localizado. Para controlar qual osso existente será
o pai dos ossos a serem criados, selecione o osso existente com o botão esquerdo do mouse e então crie
o novo osso.
Use o botão Edit Bone para refinar bones . O botão Split Bone permite que você divida bones em dois .
Esta é uma boa opção para fazer limbs . Se você fizer um osso da perna e clicar onde o joelho deveria
estar, o osso será dividido em coxa e panturrilha .
Você também pode reparentar e renomear bones na visualização de lista de bones. Para abrir essa
visualização, clique no botão Visibilidade à direita da barra superior e selecione a aba Bone. Para alterar
o pai do bone, basta arrastá-lo na visualização de lista. Você pode renomear bones clicando no nome
do bone ativo. Dar um nome aos bones ajudará você a encontrá-los mais tarde. Para verificar se a
hierarquia está correta, selecione o botão Preview Pose e teste algumas poses. Para redefinir as posições
dos bones, pressione o botão Reset Pose na barra de ferramentas.
Sprite.Geometria
Para atribuir sprites aos ossos, será necessário que a geometria deles seja criada.
Comece pressionando o botão Auto Geometry . Uma pequena janela pop-up será aberta, permitindo
que você defina como a geometria será criada .
É uma boa ideia definir todos os controles deslizantes como 0 para manter a geometria o mais simples possível.
Habilite a opção Pesos para vincular ossos aos sprites automaticamente. Clicar no botão Gerar para
todos os visíveis criará e definirá pesos de ossos para todos os sprites. Para fazer isso para
um sprite individual, basta clicar duas vezes no sprite. Isso é útil para ajustar a geometria de certos
sprites.
Para ir além dessa geometria gerada e ter controle total sobre vários vértices e
como a geometria se curva, a malha precisará ser editada manualmente. Use as
seguintes ferramentas:
— Criar vértice: Crie novos vértices (ou pontos), ou mova ou exclua aqueles
pontos
Pesos
Depois que a geometria estiver boa e limpa para todos os seus sprites, é hora de
configurar os pesos . Os pesos definem a influência do osso em cada vértice de 0 a 1,
onde 0 significa que um osso não tem influência sobre o vértice e 1 significa que o vértice
se moverá como se estivesse colado ao osso . Bons pesos na malha podem permitir
uma curvatura de ótima aparência . Definir pesos incorretamente pode quebrar a ilusão do
jogo e distorcer seus sprites .
Para começar a configurar pesos, você precisa definir quais ossos afetarão um determinado
sprite . Clique no botão Bone Influence e selecione um sprite .
Na pequena janela pop-up, você pode definir quais ossos influenciam o sprite selecionado.
Defina apenas os ossos relevantes que precisam afetar o sprite e remova o resto.
A partir daqui, configure o peso usando o Pincel de Peso e o Controle Deslizante de Peso . O
Pincel de Peso adiciona rapidamente a influência do osso selecionado aos vértices pintando neles
com o mouse . O Controle Deslizante de Peso é mais preciso, permitindo que você selecione um ou
mais pontos e, em seguida, determine a influência exata de cada osso com um controle deslizante .
O pincel é útil para configuração rápida de peso, e o controle deslizante é útil para ajuste fino das áreas
onde os ossos se dobram, como cotovelos e joelhos .
Dica: Ao trabalhar com cotovelos e joelhos, obtenha os melhores resultados alinhando os vértices
internos e externos a uma linha que passa pelo meio do ponto de flexão onde os dois ossos se
encontram . Essa linha deve cruzar os ossos em um ângulo de 45 graus . Esses vértices devem
ser influenciados apenas pelo osso superior . No entanto, cada personagem será diferente, então
sinta-se à vontade para mexer nos pesos e personalizar para obter os melhores resultados .
Para acelerar as coisas, abra o projeto Dragon Crashers e encontre os seguintes Prefabs de
personagens na seção de Prefabs e Variantes de Prefabs:
— Base_de_caracteres_pré-fabricada
— PV_Personagem_Cavaleiro
— PV_Personagem_Wolfman
— PV_Personagem_Esqueleto
Esses Prefabs são ótimos exemplos de animações compartilháveis entre personagens da mesma
estrutura.
Cinemática Inversa 2D
Você provavelmente não pensa nisso todos os dias, mas o movimento do corpo humano é muito
complexo. Se você quiser pegar um copo de água de uma mesa, sua mão deve se mover até o ponto no
espaço que o copo ocupa. Você faz tudo isso sem nem pensar em girar seu braço e antebraço,
enquanto seu cérebro processa esses cálculos em segundo plano.
Para animar o mesmo movimento em um jogo, a rotação do braço e do antebraço precisa ser animada
ao mesmo tempo. É uma tarefa desafiadora combinar as duas rotações enquanto faz um movimento
de mão crível. A ferramenta 2D Inverse Kinematics (2D IK) , que faz parte do pacote 2D Animation,
calcula as rotações e permite que uma cadeia de ossos as mova para posições-alvo.
Para começar, você primeiro precisará adicionar um IK Manager 2D no objeto no topo da hierarquia.
Este componente será responsável por gerenciar todos os IK Solvers
no personagem .
Componente 2D do Gerenciador IK
— Membro: Este é o solucionador padrão usado para pernas e braços, que pode resolver até dois
ossos e o Efetor.
— Cadeia (CCD) – Descida de Coordenadas Cíclica: Este solucionador se torna gradualmente mais
preciso quanto mais vezes o algoritmo é executado e é adequado para uma cadeia maior
de ossos.
Em personagens humanoides, o Limb Solver é a melhor escolha porque é mais rápido e otimizado
para membros de dois ossos. Comece adicionando o Limb Solver à lista do IK Manager 2D, o que
criará um novo GameObject que incluirá o componente Limb Solver 2D. Renomeie este GameObject
para algo descritivo como “Leg R LimbSolver2D” ou “Arm L LimbSolver2D”.
Primeiro, crie o Effector . Ao criar um IK para uma perna, há dois ossos: a coxa e a
panturrilha (ou canela). Coloque o Effector como um filho do osso da panturrilha
selecionando-o e criando um novo Empty GameObject . Renomeie o GameObject como Leg
Effector e mova o Effector para a ponta do osso .
2D IK em ação: quando você move o GameObject Alvo, as rotações da coxa e da panturrilha serão calculadas automaticamente
para corresponder à posição do Alvo.
Repita todo o processo de adicionar IKs com os outros membros. IKs também podem ser
adicionados em ossos que não sejam membros, por exemplo, na cabeça e no pescoço, o
que permite que o personagem olhe ao redor para as coisas.
Depois que você dominar isso, há casos de uso mais avançados. Por exemplo, você pode
configurar IKs para fazer seu personagem mirar uma arma ou criar uma animação de
caminhada procedural.
Nem tudo pode ser animado girando um osso. Às vezes, você precisa de outra expressão
facial ou pose de mão. Neste caso, você pode trocar um sprite por outro usando Sprite Swap.
Comece a usar o Sprite Swap atribuindo uma categoria e rótulo a cada um dos sprites do
personagem. A maneira mais rápida de atribuir aos sprites é pelo Skinning Editor. Pressione
o botão Visibility e vá para a aba Sprite, onde você encontrará uma lista de todos os sprites. Se
você colocou as camadas para swap em grupos separados antes de exportar para o PSB, elas
devem ser agrupadas agora. Isso é importante porque os sprites agrupados serão
adicionados ao Sprite Resolver para permitir o Sprite Swapping.
Atribuindo categoria e rótulo a cada sprite no Editor de Skinning (sprites com a mesma categoria podem ser usados e trocados em
Resolvedor de Sprites)
Selecione todos os sprites e grupos na lista e clique com o botão direito neles. Em seguida,
selecione as duas opções a seguir em ordem: Convert Layer to Category e Convert Group
to Category. Essas opções atribuirão uma Category e Label apropriados a cada sprite
automaticamente.
Os sprites que devem ser trocados estarão em uma categoria com base no nome do grupo.
Clique no botão Apply no topo. Um ativo Sprite Library será criado dentro do Prefab do personagem,
contendo todas as categorias e rótulos criados até agora.
Lembre-se deste recurso, pois ele será necessário mais tarde.
Se você der uma olhada nos sprites que estavam nos grupos, verá que agora há um sprite por
categoria, com o componente Sprite Resolver adicionado.
Os sprites que deveriam ser trocados foram adicionados ao Sprite Resolver, e agora você pode
implementar a troca de sprites clicando neles.
Use o Sprite Swap para animar expressões faciais, olhos e bocas, fazer animações sincronizadas
com os lábios, mudar gestos de mão e muito mais. O Sprite Swap também permite que equipamentos
de personagens, como chapéus e armaduras, sejam trocados.
Peles
Os ativos da Sprite Library permitem que você crie skins para seu personagem. Uma skin muda a
aparência do personagem enquanto retém suas animações, o que é uma grande economia de tempo,
de fato. Um personagem base pode ter todos os scripts, e qualquer mudança também será aplicada a
outros personagens.
Aqui está o fluxo de trabalho para configurar o suporte de skin nos personagens:
1. Finalize um personagem base: monte o Rig, configure IKs e Sprite Library. Crie um Prefab do
personagem. Você pode animar o personagem a qualquer momento.
2 . Vá para o Skinning Editor do personagem base e clique no botão Copy na barra de ferramentas .
Isso copiará bones e meshes com pesos .
3. Crie uma variante pré-fabricada deste personagem – este será o novo personagem
com um novo visual.
6. Corrija a geometria para que ela se encaixe nos novos sprites. Verifique novamente os pesos.
7 . Pressione o botão Visibility e vá para a aba Sprite . Selecione todos os sprites e grupos na lista,
clique com o botão direito neles e selecione duas opções: Convert Layer to Category e Convert
Group to Category . Pressione o botão Apply no topo .
8. Vá para a variante Prefab criada na etapa 3. Vá para o componente Sprite Library e troque
o recurso Sprite Library por um novo personagem.
Seguindo esse fluxo de trabalho, você terá um Prefab de personagem base. Outros personagens
serão Variants desse Prefab, então eles terão os mesmos componentes do Prefab base. Se
mudanças forem feitas no personagem base, por exemplo, adicionando ou mudando IKs ou Sorting Groups,
outros personagens herdarão essas mudanças.
Criar uma ótima animação requer que você aprenda os princípios da animação e as ferramentas para
aplicá-los. Aprender os princípios básicos da animação é frequentemente negligenciado, mas seu jogo se
beneficiará muito se você gastar um pouco de tempo polindo o movimento do seu personagem.
Para criar sua primeira animação, abra uma janela de animação acessando Janela.>.
Animação.>.Animação .
A janela de animação
Selecione seu personagem . Clicar no botão Criar criará o primeiro Clipe de Animação, e você pode
começar dando um nome ao clipe . Um Clipe de Animação é como uma gravação linear de como a
posição, rotação, escala e outras propriedades de um objeto mudam ao longo do tempo . Ele também
cria um Controlador Animador, que se encarrega de todos os clipes de animação e mantém o controle
de qual clipe deve ser reproduzido e quando as animações devem mudar ou se misturar .
Comece a animar clicando no botão vermelho Record . Agora, todas as alterações feitas no personagem
serão gravadas em um clipe de animação .
Quando o botão Gravar é pressionado, cada alteração criará um quadro-chave na Linha do tempo da animação.
seu personagem como você quiser. Um ou mais quadros-chave serão criados na linha do tempo, e à
esquerda os nomes das propriedades animadas atuais serão mostrados.
Agora, mova a linha da cabeça alguns quadros para frente e mude a pose do personagem.
Um novo quadro-chave (ou quadros-chave) aparecerá.
Adicionar outro quadro-chave ao longo da Linha do tempo cria uma animação que interpolará os quadros-chave.
Ao pressionar o botão Play, você verá seu personagem se movendo . Você criou sua primeira
animação .
Animando.Sprite.Swap.–.expressões.faciais
A animação de troca de sprites funciona de forma semelhante, mas requer uma etapa
adicional ao definir quadros-chave.
Definindo tangentes constantes em quadros-chave do Sprite Resolver para que os valores não sejam interpolados
Dicas de otimização
2D.Luzes
O avançado sistema de iluminação dinâmica 2D do Unity , em conjunto com mapas normais e mapas
de máscara, faz seus personagens se destacarem com lindas silhuetas iluminadas e detalhes
claramente sombreados.
Luzes 2D podem ser parte integrante da jogabilidade. Por exemplo, você pode usá-las para criar
uma lanterna para o jogador, pois ela ilumina apenas parte de um corredor escuro como breu, ou
para mostrar o cone de visão de uma câmera de vigilância que o jogador precisa evitar.
A iluminação dinâmica pode mudar drasticamente o clima de um nível, realçar os detalhes da parede
iluminada por tochas de uma caverna, atuar como feixes de luz que passam por uma janela para
iluminar partículas de poeira cintilantes ou simplesmente ser animada para simular o ciclo do dia e da noite.
Vamos dar uma olhada na variedade de luzes 2D que você pode criar e como personalizá-las.
Uma imagem de Ultimate Action Hero, um jogo em desenvolvimento por Jarek Majewski.
Para adicionar uma nova luz 2D, vá para GameObject.>.Light.>.2D e selecione um tipo de luz.
Forma livre
Este tipo de luz tem um formato poligonal que pode ser editado de forma similar
ao Sprite Shape . Esta é uma boa ferramenta para iluminar eficientemente uma
grande parte do ambiente (como uma piscina de lava), simular formas de luz
(como raios de sol vindos de um buraco no teto) ou se conformar ao formato de
uma janela onde a luz é projetada .
Sprite
Este formato permite o uso de qualquer sprite como textura de luz. Isso é útil se você
quiser um formato específico que seja impossível de ser alcançado com outros
tipos de luz. Alguns bons exemplos de texturas possíveis são reflexos de lente,
brilhos, biscoitos de luz, projeções de formas de luz como luzes de bola de discoteca
ou lâmpadas de bebê projetando estrelas contra a parede.
Paramétrico
Ponto/Ponto
O formato desta luz pode ser um círculo ou um setor circular. Esta opção é boa
para holofotes ou para iluminar um ponto específico com fogos de tocha, velas,
luzes de carro, lanternas, luz volumétrica e assim por diante.
Global
Uma Global Light não tem uma forma e, em vez disso, ilumina todos os objetos nas
camadas de classificação direcionadas. Apenas uma Global Light pode ser usada por
Blend Style (o método de interação entre a luz e os sprites) e por camada de classificação.
Use-a primeiro para adicionar uma luz de ambiente base.
Para controlar a ordem de renderização das luzes que estão na mesma Camada de Classificação, use
a opção Ordem das Luzes.
A opção Estilo de mesclagem permite que você selecione o estilo de mesclagem usado por esta Luz.
Diferentes estilos de blend podem ser personalizados no 2D Renderer Asset. Leia mais sobre
propriedades comuns usadas pelos diferentes tipos de Light aqui.
A opção Alpha Blend on Overlap mistura luzes sobrepostas em vez de multiplicar sua
intensidade. Esta opção pode transformar luz 2D em sombras. Basta definir a intensidade da luz abaixo
de 1 e escolher uma cor azul claro. Você também pode anexá-la a um personagem para projetar
uma sombra sutil.
Mapas normais e mapas de máscara são opcionais ao usar Luzes 2D, mas eles podem levar os
visuais do seu jogo a um nível totalmente novo se você tiver orçamento, tempo e recursos de
arte para isso. Personagens e o ambiente terão ainda mais
detalhes que reagem à luz, fazendo com que suas formas pareçam mais definidas e tridimensionais.
Cada ativo de sprite pode ter Texturas Secundárias opcionais atribuídas. Essas texturas podem
ser usadas por Materiais. Altere as Texturas Secundárias indo em Sprite.Editor.>.Secondary.Textures.
Por padrão, você pode atribuir dois tipos de texturas: mapa normal e mapa de máscara. O mapa normal
contém o ângulo de cada pixel no objeto, e o mapa de máscara pode ser usado para iluminação de borda
e muito mais. Você pode adicionar suas próprias texturas e referenciá-las pelo nome em shaders do Shader
Graph .
Há alguns bons motivos para atribuir texturas no nível do ativo em vez de no material.
Um benefício é que os renderizadores de sprites e outros renderizadores que usam sprites podem
compartilhar um material, mesmo quando os sprites e as texturas secundárias são diferentes.
Isso significa que eles podem ser agrupados para renderizar com mais eficiência.
Você precisará adicionar mapas normais e mapas de máscara a um material quando tiver um shader
de sprite. Cada sprite precisaria de seu próprio material com um sprite, mapa normal e mapa de
máscara. Isso rapidamente aumentaria para centenas de materiais no projeto. No entanto, ao definir
as texturas adicionais para cada sprite, você pode usar apenas um Material de Sprite. Um material
também significa uma chamada de desenho em vez de centenas.
Usar o Frame Debugger permite que você observe cada passo dado para renderizar um frame . Ter muitos Materials que não podem ser
agrupados prejudica o desempenho .
Mapas normais
Um mapa normal bem feito pode criar ou destruir a ilusão de um sprite ser 3D.
Cada pixel em um mapa normal armazena dados sobre os ângulos da textura principal.
Os canais vermelho, verde e azul (RGB) armazenam dados de ângulo para as
coordenadas X, Y e Z. Cada luz que usa um mapa normal tem uma direção, e pixels
em uma textura com um mapa normal são sombreados com base nessa direção e
na direção do pixel. Isso funciona da mesma forma que na vida real – se um pixel
estiver voltado para a direção da luz, ele será aceso, e se estiver voltado para longe, não receberá luz.
Um mapa normal
A imagem acima é um mapa normal em que os pixels estão voltados para a câmera.
Seus valores RGB são 127, 127 e 255, respectivamente. Cada canal de cor pode ter um valor de 0 a 255,
então 127 está próximo do meio. Para ficar de frente para a superfície à esquerda (-90 graus), o valor
de cor R precisa ser definido como 0. Para ficar de frente para a superfície à direita, defina R como 255.
Para ficar de frente para baixo ou para cima, defina o canal G como 0 ou 255, respectivamente.
Preparando.sprites.para.iluminação.2D
Com as Luzes 2D desativadas, o sprite tem as informações de cor (albedo), mas parece plano porque não contém informações de luz ou sombra.
Uma maneira de pintar um mapa normal é fazer desenhos do seu sprite que são iluminados de
ângulos diferentes, então combiná-los em uma textura. O sprite será iluminado com uma luz da direita
no canal R e uma luz do topo no canal G. No canal B, o sprite é iluminado pela frente, mas para
simplificar, você pode omitir esse canal ao usar um mapa normal com sprites 2D.
Isso ocorre porque a iluminação frontal em 2D não acrescenta muito ao sombreamento geral.
No entanto, essa abordagem pode levar tempo, pois você precisará pintar o sombreamento pelo
menos duas vezes para os eixos X e Y.
Como combinar duas imagens em tons de cinza sombreados (iluminadas de cima e da direita) em um mapa normal
Outra abordagem de pintura é usar um aplicativo gerador de mapa normal. Abra um sprite em um aplicativo
gerador e você pode gerar um mapa normal com apenas alguns cliques.
Os aplicativos geradores não levam em conta os ângulos do seu sprite, então evite usá-los no sprite inteiro.
Eles também não reconhecem os objetos. Em vez disso, eles estimam formas a partir das cores do sprite
ou adicionando um filtro geral semelhante ao chanfro ou relevo de aplicativos de edição de imagem ou uma
escultura em relevo. Eles não conseguem reconhecer os ângulos do rosto, por exemplo, mas tentam
adivinhar onde deve haver uma mudança em um ângulo. É uma limitação, mas eles ainda são úteis para gerar
os mapas normais de seções de sprite que são chanfradas, como correntes, cabos ou uma cauda de dragão,
e também normais de superfície para tijolos, pedras, madeira e outros.
Importe uma seção para o gerador de mapas normal, ajuste os valores, exporte e adicione você mesmo as
partes e os detalhes necessários.
Para a última técnica, o Unity oferece uma maneira de gerar mapas normais a partir de
um heightmap em tons de cinza. Esta é uma textura onde o preto representa a altura
mínima da superfície e o branco a altura máxima. Você precisa importar uma imagem como
um normal.map e marcar a opção Create from Grayscale. Esta técnica é útil para gerar
rapidamente mapas normais sem nunca sair do mecanismo.
Ao usar esse método, o controle deslizante Bumpiness aparecerá no Inspector . O Unity usa o
brilho do pixel e converte as diferenças de altura em ângulos normais do mapa, e esse
controle deslizante controla a inclinação desses ângulos . Um valor baixo de bumpiness
significa que mesmo um contraste acentuado no mapa de altura será traduzido em ângulos e
bumps mais suaves .
Convertendo textura em mapa normal usando a opção Criar a partir de escala de cinza
Como.pintar.mapas.normais.em.sprites
Para pintar um mapa normal, comece aprendendo quais cores usar para diferentes ângulos.
Primeiro, obtenha uma paleta de mapa normal para que você possa experimentar
as cores usadas para representar os ângulos da superfície. Encontre paletas online ou
simplesmente use a paleta de cores da imagem do capítulo de mapas normais. Não
importa como seu fluxo de trabalho de pintura se pareça, você só precisará copiar uma
paleta para seu aplicativo de pintura favorito e usar o seletor de cores para selecionar uma cor para pintar em seu mapa nor
As cores dos ângulos não precisam ser 100% precisas; alguns graus não farão
diferença. No entanto, certifique-se de manter a forma geral do sprite crível. Se você usar uma
cor de ângulo que não faça sentido no contexto, a forma inteira vai desmoronar quando acesa.
Pintar mapas normais pode ser complicado inicialmente porque requer uma boa imaginação
espacial. Um ótimo lugar para começar é com algo simples como os planos de base da cabeça.
Este modelo simplificado de uma cabeça humana tem uma aparência low-poly, e você pode
conferir este exemplo preparado aqui .
Ao pintar um mapa normal, tente imaginar as formas 3D básicas que são partes do seu
sprite, então visualize os ângulos de cada parte individual. Se você souber o ângulo, saberá
de qual parte do sprite da paleta amostrar a cor.
Este exemplo está funcionando em uma superfície plana, mas o processo é similar quando você está
pintando com pincéis mais macios. Você pode misturar bordas duras para obter uma
aparência mais natural.
Alguns atalhos para observar: Quando há uma forma esférica, você pode colar a esfera normal da sua
paleta . Quando você tem uma forma cilíndrica, você pode pegar uma parte da esfera, colar e esticá-
la, ou fazer um gradiente .
Esteja ciente de que copiar e colar partes de mapas normais e girá-los quebra o sombreamento.
No entanto, isso também pode ser usado a seu favor. Por exemplo, quando você precisa de uma
forma esférica côncava, basta girar a esfera 180 graus para criar um buraco.
Para que um mapa normal seja exibido em um ou mais sprites, você precisa habilitar a função de
mapa normal nas luzes.
Escolha o método de geração de mapas normais que funciona melhor para você. Provavelmente
haverá muitos ativos feitos para seu jogo, então foque nos objetos que serão mais visíveis e
simplifique as outras partes do jogo.
— Pintor Normal
— Pincel Tangente Normal do Krita
— Iluminador Sprite
— Laigter
— Lâmpada Sprite
É por isso que a água em um lago é mais reflexiva à distância, mas podemos ver nossos pés
na água quando olhamos para baixo. É também por isso que os objetos são mais reflexivos em
suas bordas.
Em gráficos 2D, você pode simular esse efeito usando uma textura adicional chamada Mask Map e
uma luz especial chamada Blend Style.
Blend Styles determinam a maneira como uma luz específica interage com sprites em uma
cena. Light Blend Styles estão localizados no ativo 2D Renderer.
Em Light Bend Styles há quatro opções para diferentes estilos de mesclagem. Deixe a primeira
opção intocada porque é a padrão e, em vez disso, trabalhe na segunda opção.
Dê a ele um nome como “Rim Light” ou “Fresnel” ou o que funcionar para você. Defina o
canal Mask Texture como R – as luzes usarão a cor vermelha da nossa textura Mask Map. Por
fim, defina o Blend Mode como Additive. Isso fará com que as luzes sejam adicionadas sobre a
iluminação existente, aumentando o brilho.
Pintando.o.Mapa.da.Máscara
A luz Fresnel usa o canal vermelho do Mask Map, mas para simplificar, vamos pintar em
preto e branco. As partes que refletirão a luz serão brancas, e as partes não refletivas serão pretas.
O efeito Fresnel afeta as bordas dos objetos, então copie o sprite base, pinte-o de preto e, em
seguida, realce as bordas de branco. Ele deve começar a se assemelhar a um objeto que tem
uma luz brilhante brilhando atrás dele. Para acelerar as coisas, adicione um efeito Inner Glow no objeto
e pinte alguns detalhes em cima. Infelizmente, não há nenhum aplicativo que possa acelerar
esse processo, então você precisará confiar em suas habilidades de pintura aqui.
Configuração.Fresnel.luz
Para fazer com que a luz afete o Mapa de Máscara, altere seu Estilo de Mesclagem para o
criado anteriormente.
As luzes Fresnel funcionam melhor com a opção Use Normal Maps habilitada e com
Distance definida para um valor baixo. Isso evita destacar o outro lado do objeto.
Use o editor de formas do Shadow Caster para editar sua geometria para que ela se ajuste
à silhueta do objeto. A luz também precisa ter algumas opções definidas para projetar uma sombra.
Use a opção Shadow Intensity para ver a sombra . Esta configuração determina a opacidade da luz em
outros objetos que estão nas sombras . Quando definida como 1, a luz não iluminará nada na área de
sombra .
Você também pode tornar a área afetada pela luz visível usando a opção Volume.Opacity . A Shadow
Volume Intensity controla a opacidade do volume de luz na área de sombra .
Among Us por InnerSloth . Além de melhorar o lado visual dos jogos, as sombras também podem ser uma parte crucial da jogabilidade .
Luzes 2D podem ser usadas junto com mapas normais e mapas de máscara em sprites, mas você
também pode usá-las em renderizadores diferentes. Vamos ver como.
2D.Mapa de blocos
Para usar 2D Lights em Tilemaps, atribua as texturas normal map e mask map aos sprites que são
usados como tiles usando o módulo Secondary Textures do Sprite Editor. As texturas secundárias
serão usadas automaticamente pelo sistema 2D Lights.
2D.Sprite.Forma
O Sprite Shape Renderer usa dois materiais diferentes por objeto: um para Fill e
um para Edge . O Edge Material usa Secondary Maps do Sprite asset . Para a
área Fill, use a textura com o modo wrap definido como Repeat para tile em vez do
sprite . Você precisará criar um novo Fill material com Material Property Block
habilitado para definir texturas secundárias .
2D.PSD.Importador.para.personagens.animados
Definir texturas secundárias no importador PSD 2D funciona de forma semelhante, com uma
pequena diferença em relação aos mapas normais.
A maneira mais rápida de criar um mapa normal e um mapa de máscara para um personagem
importado em PSD 2D é trabalhar a partir de um arquivo .PSB de personagem base.
3. Abra este arquivo no seu editor de imagens preferido e pinte um mapa normal nele.
cada camada . Salve o arquivo .
4. Quando um PSB com um mapa normal é importado para o Unity, você precisará definir o
Texture Type para Sprite e ir para Advanced settings para desmarcar a opção
sRGB(Color Texture) . Um mapa normal não contém dados sRGB de cor, apenas valores de
ângulo.
5. Atribua este arquivo PSB como uma textura secundária do seu personagem base.
Para criar um mapa de máscara, repita o processo, dê ao arquivo duplicado outro sufixo e pule a
etapa 3.
Dicas de otimização
— Defina um valor menor para a Escala de Textura de Renderização em Estilos de Mesclagem de Luz de 2D
Ativos do renderizador.
— Ao usar mapas normais, defina a Qualidade de iluminação normal das luzes como Rápida
em vez de Preciso.
Avançado.
efeitos visuais
Efeitos visuais (VFX) são a cereja do bolo de qualquer jogo de ótima aparência, e são vitais
para a experiência dos jogadores enquanto jogam. VFX comunicam eventos do jogo, como perigos
ambientais e zonas de cura, e recompensam visualmente o jogador por ações bem executadas,
como uma cena de ação culminando em uma grande explosão de fogo.
O Unity fornece muitas opções para adicionar VFX ao seu jogo. Você pode adicionar animações
quadro a quadro feitas em outro software, animar partículas ou adicionar shaders animados.
A animação quadro a quadro (ou flipbook) permite que você adicione efeitos rapidamente no Unity.
Basta importar quadros como sprites e, em seguida, animar a Propriedade Sprite ao longo do tempo
na janela Animação. Você também pode selecionar e arrastar todos os sprites de quadro para a
Cena, o que os animará automaticamente.
Embora importar quadros seja rápido, desenhar cada quadro a ser animado não é, e esse processo
pode exigir muito mais tempo e habilidade do que você tem disponível. Para economizar tempo, você
pode exportar VFX como quadros de outros aplicativos.
Outro atalho que você pode usar é selecionar todos os ativos de quadro de animação da
visualização Project e arrastá-los para a visualização Hierarchy ou Scene . Um novo GameObject
será criado com uma animação que usa a sequência feita das imagens selecionadas anteriormente .
A técnica de animação flipbook é muito performática, então use-a quando quiser ter muitas instâncias
do efeito na tela. Lembre-se de que muitos quadros em alta resolução exigirão mais memória.
A animação quadro a quadro também pode ser usada em Sistemas de Partículas, onde é chamada
de Animação de Folha de Textura.
As animações do Flipbook também podem ser usadas no Shader Graph animando a posição UV da
textura ao longo do tempo, o que cria a ilusão de quadros em movimento.
Partículas
O Particle System permite que você exiba e anime muitas imagens ou malhas
menores para obter um único efeito visual. Propriedades de partículas como
tamanho, velocidade, cor e rotação podem ser animadas ao longo do tempo usando
certas regras predefinidas e randomização. Isso permite que você crie efeitos
dinâmicos como fogo, explosões, fumaça, feitiços mágicos e assim por diante.
Main.Module.propriedades
O Sistema de Partículas tem muitos módulos, mas vamos abordar alguns dos essenciais.
Emissão
Emission controla a taxa e o tempo das partículas emitidas, enquanto Rate controla quantas
partículas são emitidas por unidade de tempo. Você também pode criar rajadas de partículas,
especificando quantas gerar e quando.
Forma
Este módulo define o volume ou superfície da qual as partículas podem ser emitidas, e a direção em
que elas viajarão. A propriedade Shape define a forma do volume de emissão.
Cor.sobre.Vida.útil
Você pode controlar a cor e a opacidade das partículas ao longo de sua vida útil avaliando o gradiente .
À esquerda do gradiente está a cor inicial, e à direita está a cor que as partículas terão quando
morrerem .
Tamanho.Ao.Vida.Vida
Esta configuração define o tamanho de uma partícula ao longo do eixo horizontal de uma curva.
Rotação.Ao.Vida.Vida
Barulho
Este módulo adicionará aleatoriedade ao movimento das partículas. É uma maneira muito rápida de adicionar
efeitos interessantes e de aparência complexa, como feitiços mágicos, energia de ficção científica, fogo
de exaustão, partículas de poeira e muito mais.
Renderizador
O módulo Renderer
O módulo Renderer, como visto acima, permite que você altere a aparência das partículas. Há muitas
configurações, mas a mais importante a ser alterada é a configuração Material, onde você pode adicionar
um novo material com uma textura.
Partículas randomizadas
A maioria das propriedades das partículas pode ser randomizada para obter uma aparência imprevisível
e natural.
O menu suspenso à direita da propriedade da partícula permite que você escolha entre diferentes
opções de randomização.
Os sistemas de partículas também podem ser aninhados uns dentro dos outros. O aninhamento faz com
que os sistemas sejam reproduzidos simultaneamente, o que permite que você alcance alguns efeitos muito complexos.
Por exemplo, para criar uma explosão, você pode combinar um sistema para fumaça, um para pequenas
faíscas e um para detritos voadores.
O Particle System é uma ferramenta muito poderosa que permite que você crie quase qualquer VFX para
seu jogo. Você pode até mesmo fazer seus efeitos brilharem usando o HDR unlit shader e o Bloom post-
processing. Teste cada propriedade, pois até mesmo as partículas mais simples farão seu jogo
parecer polido.
Para acelerar significativamente o processo de criação do seu jogo, verifique a Asset Store para obter
efeitos visuais de partículas pré-fabricados .
Gráfico de sombreamento
Outra maneira de fazer VFX é usando shaders . Shaders são um conjunto de instruções
para o processador gráfico, e eles podem, por exemplo, calcular cores de pixel ou
posições de vértices .
O Shader Graph permite que você crie shaders visualmente. Em vez de escrever código, você cria e
conecta nós em uma estrutura de gráfico. O Shader Graph fornece feedback instantâneo que reflete
suas alterações, e é simples o suficiente para usuários que são novos na criação de shaders.
Para começar a usar o Shader Graph para 2D, vá para a janela Projeto, clique com o
botão direito e selecione Criar.>.Shader.>.Universal.Render.Pipeline.>.Sprite.Lit.Shader.
Gráfico (ou Sprite.Unlit.Shader.Graph).
Use Sprite Lit Shader quando quiser que seu sprite seja afetado por luzes, o que será o
caso para quase todos os personagens e objetos. Use Sprite Unlit para superfícies não
iluminadas ou emissivas, como fogo, fontes de luz, eletricidade, magias, hologramas ou
personagens especiais como fantasmas.
Para começar a criar um shader, nomeie o arquivo primeiro . Isso criará seu shader inicial .
Em seguida, clique duas vezes no arquivo para entrar no modo de edição.
Isso abre a janela Shader Graph . Dentro da parte central, chamada Workspace, está o
Master Stack . Esta é a saída final do Shader Graph, que é responsável pela aparência final do
shader . Deve haver apenas um Master Stack por shader .
À esquerda, você verá um Blackboard . Ele contém propriedades que serão visíveis no Inspector
e Keywords .
No canto superior direito há um Graph Inspector, que tem duas abas: Node settings, que permite
que você altere as configurações de um Node selecionado, e Graph Settings, que altera as
configurações de todo o gráfico. No Inspector, você pode alternar o modo Precision; é uma
boa ideia defini-lo como half.on low-end devices. Você também pode trocar o shader Material
entre aceso e apagado.
A visualização principal na parte inferior é onde você pode ver o shader final.
Os nós no Shader Graph são os blocos de construção que contêm entradas, efeitos e interações.
Um gráfico procede da esquerda para a direita, então os nós terão slots de entrada à esquerda e
saídas à direita.
Para adicionar um novo nó, clique com o botão direito em qualquer lugar do espaço de trabalho e escolha Criar.
Node do menu de contexto . Você verá uma lista de todos os nodes agrupados por tipo . Selecione
Input.>.Texture.>.Sample.Texture.2D .
Um exemplo de um nó de textura 2D
Para referenciar essa textura de fora do shader, você precisa de uma propriedade .
As propriedades expostas serão mostradas na visualização Inspetor, onde você pode modificar os parâmetros que serão usados no Gráfico.
Para a textura, use o sprite, que é definido em cada Sprite Renderer . O Sprite Renderer
verificará _MainTex.property no shader do Material atual e definirá sua textura de sprite
como a textura no shader . Por fim, arraste essa propriedade do Blackboard para o
workspace e conecte-a ao slot Texture(T2).input no nó Sample Texture 2D . Clique no
botão Save Asset na barra de ferramentas e o shader será compilado .
Você pode usar o Shader Graph como qualquer outro shader no Unity. Clique com o botão
direito na janela Project, escolha Create.>.Material,.e selecione seu shader na lista. Todas
as suas propriedades estarão disponíveis para personalização.
Você pode testar seu shader aplicando o material criado a um sprite. Claro, este é o shader
mais simples com apenas uma textura. Sinta-se à vontade para experimentar e testar o resto
dos nós. Ou talvez você possa tentar adicionar um mapa normal e um Mapa de Máscara
(Máscara de Sprite) a este shader? Dicas: O Tipo 2D de Textura de Amostra precisa ser
definido como Normal para exibir corretamente o mapa normal, e você pode verificar os
nomes de referência das texturas Mapa Normal e Mapa de Máscara na janela Texturas
Secundárias no Editor de Sprite. Boa sorte!
Texturas Secundárias para o sprite do barril. Você pode verificar seus nomes e adicionar suas próprias texturas que podem ser
referenciadas no Shader Graph por nome.
Deslocamento de vértice
Para obter a animação de onda, o Gradient Noise é usado como uma máscara de onda. Seu UV
Offset é animado pelo Time.node multiplicado por um Float chamado Speed . Todos eles
afetam a posição dos vértices no.Vertex Context .
O contexto de vértice no Shader Graph modifica a posição dos vértices e o mestre de fragmentos empilha as informações dos pixels.
O sprite que será afetado pelo shader Waving precisa ter uma contagem de vértices
suficiente, caso contrário a animação ficará áspera. Para editar os vértices, use Skinning
Editor Geometry tools.
Edição de vértices
Mapas de fluxo
Mapas de fluxo são texturas que armazenam informações direcionais. Você pode encontrar
um shader de mapa de fluxo na demonstração do Dragon Crashers, com o nome
ShaderGraph_Lava. O shader usa a textura do mapa de fluxo para controlar a direção
das coordenadas UV da textura principal. As cores vermelho e verde são usadas para
indicar a direção XY que os pixels seguem em cada quadro, fazendo com que os pixels da textura principal “fluam”
Cores de textura do mapa de fluxo explicadas: A cor vermelha controla o movimento do pixel no eixo X, a cor verde determina no
eixo Y. O shader move os pixels da textura principal nas direções que são visualizadas pelas setas.
O mapa de fluxo pintado à mão dá ao fluxo de lava um efeito viscoso e caricatural, que combina com a direção de arte do projeto.
Algumas ferramentas que você pode usar para criar mapas de fluxo incluem o Flow Map Generator/Visualizer e o Flow map painter .
Se você usar o Affinity Photo, poderá pintar a textura desse shader em preto e branco e, em
seguida, visualizar a animação usando o Ajuste de Limite enquanto move o controle deslizante de valor.
Textura usada para o efeito de lava e como ela fica no jogo (veja como ela fica animada aqui)
Este efeito atinge a aparência de fluidos ou respingos, sem a necessidade de animação quadro a
quadro. Você pode aprender mais sobre esta animação na postagem da comunidade Surface Tension .
Reflexões e refrações
Uma das técnicas 2D mais comuns lida com reflexões e refrações, como aquelas que você vê na água,
gelo, vidro ou ar quente. Para atingir esse efeito, outra câmera produz as partes que serão refletidas
ou refratadas em uma textura de renderização. Essa textura é então usada em um shader, distorcida e
ajustada conforme necessário e, finalmente, produzida na tela.
O processo de configuração para reflexos de água, criado com arquivos de shader de demonstração do Lost Crypt chamados ShaderGraph Water Unlit
Para fazer os sprites brilharem com uma luz ofuscante, combine o shader de sprite aprimorado HDR
com o efeito de pós-processamento Bloom.
Para fazer esse efeito de luz ofuscante, multiplique a textura por um nó Color que use HDR Color
Mode . No Material, aumente o valor HDR acima de 1, com o efeito de pós-processamento Bloom
habilitado na câmera principal .
Máscara de Sprite
Máscaras de Sprite são usadas para esconder ou revelar partes de um sprite ou grupo de
sprites. Por exemplo, você pode esconder parte de uma imagem para produzir um efeito de portal ou
fazer uma carta colecionável com um efeito 3D.
O sprite usado como imagem de máscara pode ser animado com a ferramenta de animação . Isso
permite que você crie alguns efeitos interessantes . Por exemplo, você pode fazer um portal aparecer,
então crescer mais ou mudar de forma .
Mask Sprites precisam ter sua Mask Interaction definida no Sprite Renderer para serem afetados por
uma Sprite Mask. No 2D Renderer do URP, o Depth/ Stencil Buffer deve estar habilitado.
Comparação de ferramentas
• Aparência artística • Custoso de fazer (tempo, • Fácil de configurar e • Algum custo de tempo de execução
habilidade) animar
• Pode animar • Animações como
tudo (rotação fácil de • Difícil de editar depois • Fácil de editar mais tarde girar em torno do eixo
personagem) Y é mais difícil
• Consome grandes • Tamanho de textura pequeno
• Baixo custo de tempo de execução quantidades de memória • Não funciona bem
• Pode suportar vários
com pixel art
• A animação irá personagens ou skins
sempre será limitado por esqueleto
aos quadros por
• Pode ser editado em
segundo que foi
tempo de execução para adicionar
criado para eles
roupas, armas,
precisam ser criados
animação IK e
manualmente se houver
breve
alterações na velocidade ou
na taxa de quadros da animação • A animação irá
são necessários seja sempre suave –
interpolação
Use.quando.você: Use.quando.você:
• Quer uma ótima estética ou estilo específico • Não tem grandes habilidades de animação
• Quer uma animação simples de apenas alguns quadros • Quer várias skins ou personagens
Ambas as técnicas podem ser misturadas. O movimento dos membros pode ser controlado por ossos, mas
as expressões faciais podem ser controladas por trocas de sprites.
Shaders.animação.vs.clipes.de.animação.para.VFX.vs.Sistema.de.Partículas
tempo
• Pequeno
tamanho da textura
• Quer animação simples de apenas alguns • Bom para natural ou desenho animado • Bom para efeitos com um pouco de
quadros Bom para efeitos procurando animações (insetos, randomização como fogo, fluidos e
que de outra forma levaria muito tempo pássaros, efeitos de fumaça, etc.) magias
de espaço/memória quando feito
quadro a quadro • Custo de tempo de execução muito baixo
Tilemaps.vs.Sprite.vs.Sprite.Forma
em seja repetitivo
• Bom para grandes números
otimizando
jogos
• Bom para posicionamento preciso de • Bom para elementos adicionais, como um • Ótimo para formas de aparência orgânica
elementos de nível suplemento para Tilemaps e
Forma do Sprite • Edição de nível rápido
• A grade é boa para encontrar caminhos
• Muito versátil
Dicas de otimização
— Tente manter uma contagem de quadros/tamanho de textura baixa ao usar quadro a quadro
animação .
— Com Object Pooling, você pode evitar instanciar e destruir ativos VFX. Basta ativar e
desativar GameObjects.
Pós-processamento
Visão geral
À esquerda está uma imagem de uma saída de câmera sem pós-processamento. À direita está a mesma imagem com pós-processamento adicionado. Os efeitos foram
exagerados para mostrar a diferença. Aplique efeitos de pós-processamento com cautela, especialmente em jogos para dispositivos móveis.
Agora, crie um Volume Profile clicando no botão New . O Volume Profile armazenará seus efeitos
de pós-processamento e pode ser facilmente compartilhado entre Volumes e Scenes .
Se tudo estiver funcionando corretamente, o efeito Bloom deverá estar visível na visualização do jogo.
Certifique-se de que a caixa de seleção Pós-processamento na câmera esteja habilitada e que a Camada do GameObject do Volume
esteja selecionada na lista suspensa Máscara de Volumes da câmera
O Volume Global foi usado, então os efeitos devem estar sempre visíveis quando o
objeto Volume estiver ativo na Cena.
Volumes Locais
Para fazer isso, outro Objeto de Volume deve ser criado com um Perfil de pós-
processamento diferente anexado.
O modo de volume precisa ser definido como local e, em seguida, adicione o 3D Box Collider ao
Objeto de volume. O pós-processamento será aplicado quando a câmera entrar nos limites do Box
Collider, então certifique-se de que seu eixo Z seja grande o suficiente para conter o objeto da
câmera. Por padrão, o collider será muito pequeno, então verifique novamente o tamanho na Scene
view.
Aumentar o valor da Distância de mesclagem evitará que os efeitos sejam ativados abruptamente
quando a câmera entrar na zona de Volume.
O pós-processamento em URP tem muitos efeitos embutidos, e quase todos os efeitos podem ser
usados em um jogo 2D. Aqui está uma rápida visão geral dos efeitos.
Florescer
O efeito Bloom cria um brilho ao redor das áreas mais brilhantes da imagem, dando a impressão de que as partes são mais brilhantes
para simular como uma lente captura a luz. Para melhorar ainda mais a aparência, tente adicionar uma textura Lens Dirt, que simulará
as imperfeições em uma lente de câmera. Para melhor desempenho, desabilite a filtragem de alta qualidade, especialmente em dispositivos móveis.
Aberração cromática
Este efeito cria distorção de cor nas bordas de uma imagem. Isso simula lentes que separam as cores mais longe do centro.
Cor.Grading
Channel Mixer: Modifica a influência de cada canal de cor de entrada Ajustes de cor: ajusta o tom geral, o brilho e a imagem final Curvas de cor: permite ajustes precisos de cor e luminância em uma
contraste da imagem final renderizada imagem
Tonalidade dividida: matiza diferentes áreas da imagem com Tonemapping: permite remapear os valores HDR de uma imagem para um
Balanço de branco: equilibra a temperatura da cor e também pode
base nos valores de luminância, adicionando toques de cores novo intervalo de valores resfriar ou aquecer o tom de uma imagem
diferentes a sombras, tons médios e realces
Lente.Distorção.
.
Isso criará um efeito de distorção de barril comumente visto em lentes grande-angulares do mundo real. Isso curva as linhas
retas em uma imagem para dentro, e será mais pronunciado próximo às bordas. Esse efeito pode ser usado para replicar uma
curvatura de TV CRT antiga ou adicionar um efeito de lente olho de peixe.
Vinheta
A vinheta escurece a imagem em direção às bordas, o que é outra propriedade real das lentes que chama a atenção para o centro da
imagem.
Filme.Grão
O Granulado de Filme aplica ruído sutil sobre a imagem, produzindo um efeito semelhante à estrutura de emulsão de um negativo de
filme e resultando em granulação visível em filmes analógicos.
Panini.Projeção
Projetado para ajudar a renderizar vistas em perspectiva com um campo de visão muito grande, o Panini Projection também pode ser
usado em 2D para estilizar a imagem com uma distorção cilíndrica.
Dicas de otimização
— Use efeitos menos intensos, como Bloom, Aberração cromática, Gradação de cor,
Distorção de lente ou Vinheta, sempre que possível.
Conclusão
Você percorreu um longo caminho ao chegar ao final deste guia. Espero que os passos e o
conhecimento apresentados aqui ajudem você a começar sua jornada para criar belos jogos 2D no
Unity.
Ao longo dos anos, encontramos muitas pessoas que lutam com o desenvolvimento de jogos,
aquelas que parecem pensar que sempre há mais um passo para aprender ou um tutorial para
assistir antes que possam realmente começar. Mas a melhor maneira de aprender é fazendo. Então
comece agora.
Depois que você der o primeiro passo, sim, há uma boa chance de você encontrar alguns
obstáculos. Mas então você pode ter que mergulhar em um tutorial ou artigo técnico ou obter algumas
dicas boas de um colega desenvolvedor, e você estará de volta ao seu caminho novamente.
O desenvolvimento de jogos exige que você faça e aprenda. Sempre haverá um equilíbrio entre os dois.
Boa sorte!
unidade .com