[MÚSICA] E aí pessoal, tudo bem? Nessa aula vamos ver como adicionar sprites animados no jogo que fizemos no módulo passado. Primeiro faça download do arquivo zip que iremos utilizar nesse módulo. Importe todas as imagens para a pasta Assets.XCAssets. [SEM ÁUDIO] No editor de cena clique na seta ao lado esquerdo do botão Animate. Você verá uma lista de nós dessa cena em uma linha do tempo. Vamos animar o inimigo primeiro. Na biblioteca de objetos encontre a ação Animate with textures. Clique e arraste na linha do tempo para o inimigo. Clique na biblioteca de mídia para ver os sons e imagens importados no projeto. Encontre as duas texturas do inimigo. Para selecionar mais de uma imagem por vez deixe a tecla shift pressionada. Clique e arraste para a área Textures. Nessa área, você pode reordenar a ordem dos sprites que vão compor a sua animação quadro a quadro. Deixe Start Time como zero e para Duration coloque 0.4 segundo. Como temos duas imagens que irão se alternar isso significa que cada imagem irá aparecer por 0.2 segundo. Agora temos que fazer com que essa animação se repita infinitamente. Selecione a animação na linha do tempo e clique na seta circular que aparece no canto inferior esquerdo. Aqui podemos definir quantas vezes essa animação vai se repetir clicando em mais e menos. Como queremos que essa animação se repita infinitamente clique no botão com o símbolo de infinito. Vamos fazer o mesmo para o jogador e para a moeda. [SEM ÁUDIO] Para o jogador configure a duração para 0.5 segundo para que a animação fique pouco mais lenta que a do inimigo e coloque para repetir infinitamente. [SEM ÁUDIO] Na moeda vamos adicionar essas seis imagens e vamos repetir no final a imagem 1 para que a moeda fique dois quadros da animação nessa imagem. Configure a duração para 0.7 segundo, assim cada imagem aparecerá por 0.1 segundo. Coloque também para repetir infinitamente. Para visualizar as animações sem ter que rodar no simulador clique no botão Animate. Você pode ir ajustando o tempo de duração das animações para atingir o resultado desejado. Muito bem! Vamos ver agora como adicionar sprites animados por código. Você pode criar o sprite node por código também como vimos nos módulos passados, ou pode criá-lo pelo editor de cena, achar a referência deste nó pelo nome e adicionar a animação das texturas. Crie novo sprite com a imagem da moeda. [SEM ÁUDIO] Redimensione para ficar do tamanho do label de pontuação e mude o nome para CoinHUD. [SEM ÁUDIO] [SEM ÁUDIO] [SEM ÁUDIO] No código crie uma variável SKSpriteNode chamada coinHUD e dois vetores de SKTexture chamados coinIdleFrames e coinFlipFrames. Esses vetores terão as imagens quadro a quadro das nossas animações. Na função didMoveToView encontre a referência de coinHUD pelo nome com a função childNodeWithName e crie os vetores de SKTexture. coinIdleFrames contém quatro texturas. gold1, gold2, gold1 e gold5 Dessa forma o ícone da moeda ficará girando pouco para a direita e para a esquerda, mas sem fazer a animação de giro completa e coinFlipFrames contém as mesmas sete texturas que fizemos pelo editor de cena. Vamos criar agora aquela ação Animate with textures que fizemos no editor de cena. idleAnimation igual SKAction.animateWithTextures que recebe como argumento o vetor de texturas coinIdleFrame e a duração por frame de 0.3 segundo. Precisamos agora indicar que essa é uma ação que se repete infinitamente. Crie uma nova constante chamada loopIdleAnimation igual SKAction.repeatActionForever que recebe como argumento a ação idleAnimation. Para iniciar essa ação de animação em loop, chame a variável coinHUD e execute a função runAction passando como argumento a função loopIdleAnimation. Assim, quando rodarmos o jogo esse sprite ficará animado. Por fim, vamos fazer que quando o contador da pontuação subir essa moeda do ícone faz a animação de giro completo. Na função addScore crie uma constante chamada flipAnimation que recebe uma animação com as texturas do vetor coinFlipFrames e 0.1 segundo de duração do frame e rode a animação com a linha coinHD.runAction(flipAnimation). Rode no simulador para ver o resultado. [SEM ÁUDIO] Repare que, quando a animação flipAction é chamada ela substitui temporariamente a ação Idle. Porém quando acaba, a animação Idle continua a ser executada, pois ela é uma animação infinita. Na próxima aula, você verá pouco mais sobre animações com SKAction. Até lá!