Ao criar jogos temos diversas preocupações, que precisam de atenção para trazer um game gostoso de jogar.
E dentre elas estão toda a parte da programação, mecânicas agradáveis, jogabilidade, level Design, etc.
Mas, trazer bastante detalhes em nossos jogos, é algo que sempre agrada, e que também merece uma atenção.
Tilemaps
Em jogos 2D é comum o uso de Tilemaps, para a criação de chão, paredes, e até mesmo o cenário.
E isso porque o Tilemap já conta com uma grid e um TilePallet que facilita demais na montagem do cenário.
Mas, por padrão ele é criado sendo totalmente estático, sem nenhum tipo de animação.
E deixando a parte decorativa do cenário, um trabalho a ser feito posteriormente.
Porém, existe uma forma de personalizar nossos tiles, e criar tiles animados, para integrar nosso cenário.
Tilemap animado
Primeiramente precisaremos acessar algumas classes da Unity que gerenciam o nosso TileMap.
E faremos isso criando um Script, importante a biblioteca “Unity Engine.Tilemaps”, e herdar de “Tilebase”.
E dessa forma vamos conseguir acessar as classes que manipulam o Tilemap, e fazer nossas alterações.
Variáveis:
Então precisaremos declarar algumas variáveis, a primeira será um Array de Sprite e a segundo um Speed.
Pois, com o Array vamos poder referenciar quantas imagens quisermos para compor o loop de animação.
E através dessa variável float Speed, vamos conseguir definir a velocidade que será executa a animação.
Reescrevendo a classe “GetTileData”:
Agora vamos dar um “Override” na classe “GetTileData”, para reescreve-la e adapta-la para nosso jogo.
E essa classe pede 3 parâmetros: “Vector3 int”, que retorna a posição em Int para os tiles na Grid.
E servindo quase como um index de localização, o segundo parâmetro é um “ITilemap”.
E que é a referência do tilemap ao qual seu tile será inserido, e por fim a referência ao “tileData”.
E agora dentro do método precisamos verificar se nosso array de sprites não é nulo, e se é maior que 0.
E caso não seja nulo e maior que 0, atribuirmos ao “tileData.Sprite”, a primeira imagem do nosso array.
Pois, assim quando formos “Pintar” nosso tile animado, ele mostrará uma imagem na ponta do pincel como de costume.
Reescrevendo a classe “GetTileAnimationData”:
Agora precisamos reescrever a classe GetTileAnimationData, que pede praticamente os mesmo parâmetros da anterior.
Porém, no lugar do “tileData”, ela pede uma referência ao “TileAnimationData”, que nos traz algumas opções.
Como manipular os sprites, velocidade da animação e também de onde a animação se inicia.
E então verificaremos dentro da função novamente se o nosso array de sprites é maior que zero.
E caso seja, primeiro atribuímos ao “tileAnimationData.animatedSprites”, o nosso array de sprites.
E depois atribuímos ao “tileAnimationData.animationSpeed”, o valor da nossa variável speed.
E por fim, atribuímos o valor 0 para o “tileAnimationData.animationStartTime”, para começar a animação do início.
Mas precisamos retornar true dentro da função, e retornar false, fora da função, caso a verificação não seja atendida.
Criando o Asset e configurando:
Para finalizar o nosso script, devemos criar um atributo “CreateAssetMenu”.
E definir um nome para a opção de criar um asset, e um nome para o novo asset gerado.
E dessa forma poderemos criar Assets personalizados em nosso projeto, que serão os tiles animados.
E após salvar o script, clicando com o botão direito do mouse na aba “Project”, deverá aparecer uma nova opção.
E selecionando essa Opção, um novo asset será criado, agora basta arrastar os Sprites para o nosso Array.
E na variável speed, defina a velocidade que você deseja que a animação seja executada.
E após configurar nosso arquivo de Tilemap animado, você precisa arrasta-lo para seu TilePallet.
E já está pronto para seu pintado na cena, selecione a grid que preferir, e pinte ele normalmente.
E quando der play, seu tile já iniciará totalmente animado em gameplay.
Esperamos que tenham gostado dessa dica, e a depender do seu game pode ser muito útil.
E poupar algum tempo de desenvolvimento, mas é sempre importante analisar e conhecer as possibilidades.
Script Completo:
Seja o primeiro a comentar.