< Return to Video

2D Roguelike 2 of 14 : Animations

  • 0:02 - 0:06
    Bem-vindo de volta a série de vídeos do projeto scavengers.
  • 0:06 - 0:08
    No vídeo anterior vimos como configurar
  • 0:08 - 0:10
    o projeto e demonstrar o jogo finalizado.
  • 0:11 - 0:14
    Neste vídeo vamos criar as animações
  • 0:14 - 0:16
    para o jogador e inimigos
  • 0:16 - 0:18
    baseado no sprite sheet fornecido
  • 0:18 - 0:21
    e também configurar os prefabs do jogador e dos inimigos.
  • 0:22 - 0:24
    Vamos criar uma nova scene
  • 0:27 - 0:31
    e vamos começar criando o prefab do jogador,
  • 0:31 - 0:33
    e também as animações que serão utilizadas.
  • 0:34 - 0:37
    Vamos clicar em Game Object - Create Empty
  • 0:39 - 0:41
    e vamos chamar esse Game Object de Player.
  • 0:43 - 0:46
    Na nossa pasta Sprites temos uma sprite sheet,
  • 0:46 - 0:49
    que já foi separado
  • 0:49 - 0:50
    em múltiplos sprites.
  • 0:50 - 0:53
    Para mais informações sobre sprite sheets e
  • 0:53 - 0:55
    sprites você pode ler a informação no link abaixo.
  • 0:55 - 0:57
    Neste caso vamos selecionar o
  • 0:57 - 1:00
    primeiro conjunto de frames,
  • 1:00 - 1:02
    que são a animação do jogador parado,
  • 1:02 - 1:04
    e eu fiz isso clicando no primeiro frame e depois
  • 1:04 - 1:06
    shift-click no último frame que eu quero.
  • 1:06 - 1:08
    Eu vou clicar nos sprites selecionados e arrastá-los
  • 1:08 - 1:09
    para o player prefab.
  • 1:10 - 1:11
    E agora vamos dar um nome para a animação,
  • 1:11 - 1:14
    vamos chamá-la de PlayerIdle,
  • 1:14 - 1:16
    esta é a animação que será executada quando
  • 1:16 - 1:18
    o jogador não está fazendo nada.
  • 1:18 - 1:20
    Vamos colocar a animação na pasta Animations.
  • 1:21 - 1:23
    Você irá notar que quando fizemos isso que dois components
  • 1:23 - 1:26
    foram adicionados ao game object, um sprite renderer,
  • 1:26 - 1:29
    que irá desenhar o sprite atual da animação.
  • 1:29 - 1:33
    E um animator que irá permitir que nós controlemos a execução da animação.
  • 1:33 - 1:35
    Quando arrastamos os frames, estes dois
  • 1:35 - 1:38
    componentes foram adicionados, a Unity pedir que salvemos
  • 1:38 - 1:42
    a animação, que foi salva na pasta Animations.
  • 1:42 - 1:45
    Também foi criado o que chamamdos de animator controller,
  • 1:45 - 1:47
    que irá nos permitir gerenciar qual
  • 1:47 - 1:49
    animação está sendo executada.
  • 1:49 - 1:52
    Vamos movê-lo para nossa pasta Animator Controllers
  • 1:53 - 1:55
    E iremos adicionar mais algumas animações ao player.
  • 1:56 - 1:57
    Vamos voltar aos sprites.
  • 1:58 - 2:00
    E agora irei selecionar
  • 2:02 - 2:05
    os dois frames da animação PlayerChop,
  • 2:05 - 2:07
    arraste-os para o player,
  • 2:07 - 2:09
    e vamos chamá-la de PlayerChop.
  • 2:10 - 2:13
    Vamos colocar esta animação na pasta Animations.
  • 2:17 - 2:19
    Agora perceba que quando fizemos isso, não foi adicionado
  • 2:19 - 2:21
    outro animator controller, ao invés disso
  • 2:21 - 2:24
    esta animação foi adicionada ao animator controller
  • 2:24 - 2:26
    que já existe no player.
  • 2:26 - 2:29
    Vamos repetir este processo para a animação PlayerHit.
  • 2:34 - 2:37
    E em seguida podemos verificar se está funcionando corretamente.
  • 2:40 - 2:43
    Como podemos ver, nosso player tem a animação quando está parado,
  • 2:43 - 2:45
    mas ela está um pouco rápida
  • 2:45 - 2:47
    o que vamos fazer é abrir
  • 2:47 - 2:50
    o animator controller referenciado clicando duas vezes nele,
  • 2:52 - 2:54
    selecionar o estado PlayerIdle
  • 2:54 - 2:57
    e vamos alterar a velocidade da animação para 0.5,
  • 2:57 - 2:59
    que é metade da velocidade normal da animação.
  • 2:59 - 3:01
    Perceba que as outras duas animações
  • 3:01 - 3:03
    foram adicionadas como estados,
  • 3:03 - 3:05
    e mais para a frente na série de vídeos iremos
  • 3:05 - 3:07
    ver como controlar a mudança
  • 3:07 - 3:10
    entre estes estados via script.
  • 3:10 - 3:11
    Vamos verificar agora.
  • 3:14 - 3:15
    Muito bem.
  • 3:17 - 3:19
    Com as animações para o player feitas
  • 3:19 - 3:21
    vamos agora aplicar
  • 3:21 - 3:25
    uma tag ao player, chamada Player.
  • 3:25 - 3:27
    A tag Player já está pré-criada em
  • 3:27 - 3:29
    todos os projetos da Unity, nós também acrescentamos
  • 3:29 - 3:32
    algumas tags adicionais, food, exit,
  • 3:32 - 3:34
    enemy e soda.
  • 3:34 - 3:36
    Fizemos isso clicando em Add Tag
  • 3:38 - 3:42
    e digitando os nomes nos campos.
  • 3:43 - 3:45
    Vamos configurar a tag Player
  • 3:45 - 3:47
    e vamos também configurar a layer.
  • 3:47 - 3:49
    Aqui temos as layers default,
  • 3:49 - 3:53
    e acrescentamos uma layer adicional chamada Blocking.
  • 3:53 - 3:55
    Esta é a layer onde todas
  • 3:55 - 3:57
    as colisões serão checadas
  • 3:57 - 3:59
    portanto vamos selecionar esta layer
  • 3:59 - 4:01
    para o player, e criamos ela da mesma maneira,
  • 4:01 - 4:04
    selecionando Add Jayer e digitando o nome.
  • 4:04 - 4:06
    Vamos selecionar a layer Blocking.
  • 4:06 - 4:08
    Vamos adicionar mais uma layer
  • 4:08 - 4:10
    relacionada ao jogador, ou seja
  • 4:10 - 4:13
    vamos configurar a layer para o sprite renderer.
  • 4:13 - 4:16
    Temos algumas layers pré-definidas,
  • 4:16 - 4:19
    A layer Floor, que será para o nosso cenário.
  • 4:19 - 4:21
    A layer Item que será renderizada na frente
  • 4:21 - 4:23
    do cenário, que será utilizada pela comida e pelo refrigerante.
  • 4:23 - 4:26
    E uma layer Units para o player e os inimigos.
  • 4:26 - 4:29
    Vamos associar a player a layer Units.
  • 4:30 - 4:32
    Depois vamos adicionar dois components
  • 4:32 - 4:36
    ao player, vamos adicionar um box collider 2D
  • 4:36 - 4:38
    e um rigidbody 2D.
  • 4:38 - 4:40
    O box collider 2D irá nos permitir
  • 4:40 - 4:42
    verificar colisões contra o player.
  • 4:42 - 4:44
    E o rigidbody 2D nos irá permitir
  • 4:44 - 4:47
    mover o player usando o sistema de física da Unity.
  • 4:47 - 4:50
    Vamos configurar o rigidbody 2D para Is Kinematic
  • 4:50 - 4:52
    já que não queremos o player voando
  • 4:52 - 4:54
    e quicando pelo cenário, nós apenas vamos movê-lo
  • 4:54 - 4:57
    no grid de espaços do nosso cenário.
  • 4:57 - 4:59
    E vamos controlar o movimento usando um script
  • 4:59 - 5:01
    e configurando como Is Kinematic.
  • 5:01 - 5:03
    Vamos tambem ajustar o tamanho do
  • 5:03 - 5:05
    nosso box collider 2D
  • 5:05 - 5:07
    fazendo com que ele fique um pouco menor para que o
  • 5:07 - 5:09
    player não colida acidentalmente com
  • 5:09 - 5:12
    objetos nos espaços adjacentes,
  • 5:12 - 5:14
    apenas quando tentarmos mover para um espaço
  • 5:14 - 5:17
    já ocupado por outro collider.
  • 5:17 - 5:19
    Há outros componentes que iremos adicionar ao
  • 5:19 - 5:21
    player conforme desenvolvemos ele, mas por enquanto este é um bom ponto de partida.
  • 5:21 - 5:23
    Agora vamos selecionar o player
  • 5:23 - 5:27
    e arrastá-lo para nossa pasta Prefabs para criar um prefab.
  • 5:27 - 5:29
    Com o prefab criado
  • 5:29 - 5:32
    podemos remover temporariamente o player da hierarquia
  • 5:32 - 5:34
    e agora vamos criar nosso primeiro inimigo.
  • 5:34 - 5:37
    Vamos clicar em Game Object - Create Empty
  • 5:37 - 5:39
    e vamos chamá-lo de Enemy1.
  • 5:39 - 5:43
    Vamos começar acrescentando animações ao Enemy1.
  • 5:43 - 5:44
    Vamos voltar para os sprites
  • 5:45 - 5:48
    shift-click nos frames da animação EnemyIdle
  • 5:48 - 5:49
    e arraste-os.
  • 5:50 - 5:52
    Vamos chamar de Enemy1Idle.
  • 5:53 - 5:55
    This is going to automatically add the components that
    Automaticamente os componentes necessários
  • 5:55 - 5:57
    serão adicionados e iremos acrescentar os outros
  • 5:57 - 5:59
    frames de nossa animação.
  • 6:02 - 6:04
    Adicione a animação Attack.
  • 6:06 - 6:08
    Podemos verificar que as animações estão funcionando.
  • 6:11 - 6:13
    Aí esta.
  • 6:14 - 6:18
    Agora também vamos acrescentar um box collider e um rigidbody.
  • 6:24 - 6:26
    Também vamos configurar o rigidbody do Enemy
  • 6:26 - 6:28
    para Is Kinematic
  • 6:28 - 6:31
    e vamos configurar a tag Enemy
  • 6:31 - 6:33
    e configurar o Enemy para a layer Blocking.
  • 6:33 - 6:37
    Vamos também configurar o sorting layer do sprite renderer para Units.
  • 6:41 - 6:43
    Isto feito vamos arrastar o Enemy
  • 6:43 - 6:45
    para criar o prefab do primeiro inimigo.
  • 6:49 - 6:51
    Mas ao invés de apagar o inimigo nós vamos apenas
  • 6:51 - 6:53
    modificá-lo para criar o segundo inimigo.
  • 6:54 - 6:56
    Renomeie-o para Enemy2.
  • 6:59 - 7:01
    E vamos arrastar
  • 7:01 - 7:03
    os frames da animação Enemy2Idle.
  • 7:12 - 7:14
    E da animação Enemy2Attack.
  • 7:21 - 7:23
    Quando arrastamos a animação
  • 7:23 - 7:27
    para o inimigo criamos um novo animator controller.
  • 7:27 - 7:31
    Vamos movê-lo para a pasta Animator Controllers.
  • 7:31 - 7:34
    Agora vamos abrir o animator controller do Enemy1
  • 7:34 - 7:36
    e podemos ver que todas as
  • 7:36 - 7:39
    animações foram acrescentadas como estados.
  • 7:39 - 7:41
    Agora o que nós vamos fazer é
  • 7:41 - 7:43
    apagar os estados relativos ao Enemy2
  • 7:43 - 7:45
    para isso, fazemos shift-click em cada estado
  • 7:45 - 7:49
    e depois clicamos com o botão direto para apagar.
  • 7:49 - 7:51
    Agora a Unity vai perguntar se queremos apagar os assets selecionados
  • 7:51 - 7:53
    escolha "Delete"
  • 7:55 - 7:57
    E fizemos isso porque
  • 7:57 - 7:59
    Enemy1 e Enemy2 irão compartilhar
  • 7:59 - 8:03
    a mesma máquina de estados, pois ambos tem os mesmos dois estados
  • 8:03 - 8:05
    Idle e Attack.
  • 8:05 - 8:07
    O que vamos fazer agora é criar o que chamamos de
  • 8:07 - 8:09
    animator override controller,
  • 8:09 - 8:13
    que nos vai permitir utilizar a mesma máquina de estados
  • 8:13 - 8:15
    e o mesmo script para controle
  • 8:15 - 8:17
    mas executar animações diferentes
  • 8:17 - 8:18
    em cada um dos estados.
  • 8:18 - 8:20
    Então vamos selecionar
  • 8:20 - 8:24
    Create - Animator Override Controller.
  • 8:27 - 8:29
    Vamos chamar de Enemy2
  • 8:30 - 8:32
    E a primeira coisa que vamos fazer é especificar
  • 8:32 - 8:35
    qual controller vai ser afetado pelo override,
  • 8:35 - 8:37
    selecionamos o controller do Enemy1 e arrastá-lo.
  • 8:39 - 8:41
    E aqui estão as duas
  • 8:41 - 8:44
    animações originais que iremos executar,
  • 8:44 - 8:47
    Enemy1Idle e Enemy1Attack,
  • 8:47 - 8:49
    e nos vamos substituí-las por
  • 8:50 - 8:52
    Enemy2Attack
  • 8:54 - 8:56
    e Enemy2Idle.
  • 8:59 - 9:01
    E no Enemy2 iremos mudar
  • 9:01 - 9:03
    o animator controller para agora
  • 9:03 - 9:06
    utilizar o animator override controller.
  • 9:11 - 9:13
    Agora se executamos a cena.
  • 9:16 - 9:17
    Aí está.
  • 9:18 - 9:23
    Finalmente vamos arrastar Enemy2 para a pasta Prefabs
  • 9:24 - 9:26
    para criar um novo prefab.
  • 9:26 - 9:28
    Em seguida vamos apagar Enemy2 da hierarquia
  • 9:28 - 9:30
    e salvar a cena.
  • 9:31 - 9:33
    Vamos chamá-la de Main
  • 9:33 - 9:36
    e salvá-la na nossa pasta Scenes.
  • 9:37 - 9:39
    Agora que temos nossos prefabs básicos criados
  • 9:39 - 9:42
    para o Player e nossos inimigos
  • 9:42 - 9:44
    agora vamos criar os outros
  • 9:44 - 9:47
    prefabs, e vamos também criar o layout do nosso cenário.
  • 9:47 - 9:49
    No próximo vídeo vamos criar
  • 9:49 - 9:53
    os prefabs do chão, paredes, comida, refrigerante
  • 9:53 - 9:55
    e saída.
Title:
2D Roguelike 2 of 14 : Animations
Description:

more » « less
Video Language:
Arabic
Duration:
09:58

Portuguese, Brazilian subtitles

Revisions