You are on page 1of 86

Caderno Games

Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno de Exercícios Caderno Games
Caderno Games
GAMES Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
1ª Edição Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Caderno Games
Copyright © 2012
Todos os direitos reservados. Lei 9.610/98 e atualizações.
Nenhuma parte desta publicação impressa poderá ser re-
produzida ou transmitida, por quaisquer meios empregados,
sejam eletrônicos, mecânicos, fotográficos, gravações, etc.
Todas as marcas e imagens de hardware, software e outros,
utilizados e/ou mencionados nesta obra, são propriedades de
seus respectivos fabricantes, donos e/ou criadores.

Esta apostila é de uso exclusivo das unidades de ensino com


sistema Interasoft.

2
Sumário

1. Introdução à Engine Unity.................................................................................................................. 5


2. Cenas e Objetos.................................................................................................................................. 5
3. Arquivos e Componentes - 1.............................................................................................................. 6
4. Arquivos e Componentes - 2.............................................................................................................. 8
5. Componente Transform...................................................................................................................... 9
6. Componente Camera......................................................................................................................... 9
7. Câmeras e Iluminação - 1................................................................................................................. 10
8. Câmeras e Iluminação - 2................................................................................................................. 12
9. Física e Colisões - 1........................................................................................................................... 13
10. Física e Colisões - 2......................................................................................................................... 15
11. Introdução à Codificação................................................................................................................ 16
12. Inspector........................................................................................................................................ 18
13. Métodos de Componentes............................................................................................................. 19
14. Tags................................................................................................................................................. 21
15. Instâncias de Gameobjects............................................................................................................. 23
16. Método Update.............................................................................................................................. 24
17. Inputs e Movimentação - 1............................................................................................................. 26
18. Inputs e Movimentação - 2............................................................................................................. 28
19. Física e Colisores............................................................................................................................. 30
20. Colisão de Triggers.......................................................................................................................... 32
21. Character Controller - 1.................................................................................................................. 34
22. Character Controller - 2.................................................................................................................. 36
23. Terrenos - 1..................................................................................................................................... 38
24. Terrenos - 2..................................................................................................................................... 39
25. Água e Áudio.................................................................................................................................. 41
26. Componente Audio Source............................................................................................................ 42
27. Sprites e Spritesheets..................................................................................................................... 43
28. Sprite Renderer e Layers................................................................................................................. 45
29. Animações 2D - 1............................................................................................................................ 47
30. Animações 2D - 2............................................................................................................................ 49
31. Componente Animator - 1.............................................................................................................. 51
32. Componente Animator - 2.............................................................................................................. 53
33. Animações 3D................................................................................................................................. 55

3
34. Mecanim - 1.................................................................................................................................... 56
35. Mecanim - 2.................................................................................................................................... 58
36. Mecanim - 3.................................................................................................................................... 60
37. Mecanim - 4.................................................................................................................................... 62
38. Mecanim - 5 e Partículas................................................................................................................ 64
39. Cachoeira........................................................................................................................................ 66
40. Cachoeira e Fogo............................................................................................................................ 67
41. User Interface (UI).......................................................................................................................... 69
42. Rect Transform - 1.......................................................................................................................... 70
43. Rect Transform - 2.......................................................................................................................... 72
44. Componentes do Canvas - 1........................................................................................................... 73
45. Componentes do Canvas - 2........................................................................................................... 75
46. Space Strike – 1.............................................................................................................................. 77
47. Space Strike - 2............................................................................................................................... 78
48. Space Strike – 3.............................................................................................................................. 79
49. Space Strike – 4.............................................................................................................................. 82
50. Space Strike - 5............................................................................................................................... 83

4
1. INTRODUÇÃO À ENGINE UNITY
O primeiro capítulo é uma introdução à Engine Unity, apresentando algumas de suas funcio-
nalidades e ferramentas. Para desenvolver seu entendimento sobre o assunto, resolva os exercícios a
seguir.

1. Basicamente, o que é uma Engine?

2. No Unity, o que é o recurso de codificação?

3. Relacione as opções abaixo com suas respectivas funções:


( 1 ) Window
( 2 ) New Project
( 3 ) Open Project
( 4 ) Save Project

( ) Mostra a janela referente à criação de um novo projeto.


( ) Permite abrir um projeto salvo no computador ou na nuvem.
( ) Salva o status do projeto, contendo configurações do ambiente de desenvolvimento.
( ) Contém uma lista com todas as abas disponíveis.

2. CENAS E OBJETOS
Foi apresentado como funciona o sistema de cenas dentro de um projeto e o que são os Ga-
meObjects, aprendendo a inserir e manusear objetos. A seguir encontram-se alguns exercícios para
prática.

1. No Unity, o que é um prefab?

2. O que é exibido na aba Inspector? E qual sua função?

5
Passo a passo:
1. Para iniciar, abra o Unity.
2. Na janela inicial do programa clique em New para criar um novo projeto.
3. Para o nome do projeto digite Exemplo Cenas
4. Mantenha o projeto como 3D e o diretório padrão. Clique em Create Project para criar o
projeto.
5. Na barra de menus, clique em GameObject, direcione o cursor em 3D Object e selecione
Cylinder.
6. Clique em File e selecione a opção Save Scenes.
7. No campo referente ao nome digite Cena1 Clique em Salvar para confirmar a operação.
8. Exiba o menu File novamente e selecione New Scene.
9. Clique em GameObject, direcione o cursor em 3D Object e selecione Plane.
10. Acesse a opção Save Scenes. Defina o nome Cena2 e salve a cena.
11. Clique e arraste o item Plane, da aba Hierarchy, para a aba Project.
12. Dê um clique duplo na Cena1 para abri-la.
13. Na caixa de diálogo clique em Save para salvar as alterações na cena.
14. Agora, arraste o item Plane, da aba Project, para a aba Hierarchy.

15. Observe as alterações na cena. Após isso, feche o Unity salvando as alterações realizadas.

3. ARQUIVOS E COMPONENTES - 1
Aprendemos muito sobre arquivos e componentes neste capítulo, entendendo suas particulari-
dades e características. Resolva as questões abaixo para praticar o conteúdo apresentado.

6
1. No que são baseados os ambientes gráficos 2D e 3D?

2. Dê alguns exemplos de atributos gráficos especializados chamados de Shaders.

Passo a passo:
1. Exiba o Menu Iniciar e abra o Unity.
2. Clique em New para criar um novo projeto.
3. Nomeie o projeto como Exemplo Componentes Mantenha a opção 3D selecionada e cli-
que em Create project.
4. Na barra de menus clique em GameObject, direcione o cursor em 3D Object e selecione
Cube.
5. Na aba Scene clique em 2D para alterar o modo de visualização.
6. Arraste o item Cube, da aba Hierarchy, para a aba Project para criar um prefab.
7. Com o prefab selecionado, na aba Inspector, altere o valor do campo Position X para 3
8. Arraste o prefab para a aba Hierarchy.

9. Observe que um novo cubo foi criado, com uma posição diferente e com o mesmo nome,
mas com um número para diferenciar do objeto anterior.
10. Para finalizar, feche o Unity sem salvar as alterações na cena.

7
4. ARQUIVOS E COMPONENTES - 2
Nesse capítulo estudamos sobre alguns componentes e configurações de arquivos 2D e 3D. Para
desenvolver seu entendimento acerca do tema, faça os exercícios a seguir.

1. Nas lacunas abaixo, marque V para verdadeiro ou F para falso de acordo com as afirmações:
( ) As texturas fazem o uso de um recurso chamado Material, e estes materiais são aplica-
dos em meshs.
( ) O componente Collider é utilizado para detecção de colisões. Seu formato pode ser con-
figurado através do próprio Inspector ou de um script (código).
( ) Na criação de um novo material, o campo Shader possibilita selecionar o tipo de collider
que será utilizado.
( ) Para adquirir assets não é necessário estar conectado com uma conta do Unity, basta
utilizar sempre a opção Download.

Passo a passo:
1. Para iniciar, abra o Unity.
2. Clique em New para criar um novo projeto.
3. Nomeio o projeto como Exemplo Material
4. Mantenha a opção 3D selecionada e clique em Create project.
5. Clique com o botão direito dentro da pasta Assets da aba Project.
6. No menu pop-up, selecione Create e clique em Material.
7. Para o nome digite ExemploMaterial e tecle <Enter> para confirmar.
8. Com o material selecionado, na aba Inspector, clique na bolinha da opção Albedo.
9. Entre suas opções, selecione Default-Particle Texture 2D.
10. Na barra de menus clique em GameObject e, em 3D Object, selecione Sphere.
11. Posicione o cursor dentro da aba Scene e tecle <F> para focar a visualização.
12. Arraste o material criado na aba Project até o objeto Sphere na aba Hierarchy.

8
13. Feche o programa sem salvar as alterações na cena.

5. COMPONENTE TRANSFORM
Aprendemos todo o funcionamento sobre o componente Transform. Para praticar o conteúdo
apresentado, resolva os exercícios abaixo.

1. Para que servem os valores de Scale do componente Transform?

2. O que a opção Reset, referente ao Transform, faz?

Passo a passo:
1. Abra o Unity.
2. Clique em New e crie um novo projeto 3D com o nome Exemplo Transform
3. Clique em GameObject, exiba as opções de 3D Object e selecione Cube.
4. Com o cursor sobre a aba Scene, tecle <F> para focar a visualização no objeto.
5. Abaixo da barra de menus, clique na ferramenta de rotação.
6. A partir dos eixos, incline o cubo um pouco para baixo.
7. Selecione a ferramenta de alterar a posição de objetos.
8. Utilize o eixo Y para subir o cubo na cena.
9. Clique no quarto botão da barra de ferramentas, para poder alterar a escala do objeto.
10. Utilize os cubos dos eixos para aumentar as dimensões do objeto.
11. Após isso, clique com o botão direito sobre o componente Transform na aba Inspector.
12. Nas opções exibidas selecione Reset.
13. Com o cursor dentro da cena, tecle <F> para focar a visualização no cubo.
14. Agora, altere os valores dos campos X, Y e Z de Scale para 2
15. Desse modo, o tamanho do cubo foi dobrado. Feche o Unity sem salvar as alterações.

6. COMPONENTE CAMERA
Conhecemos quase todo o componente Camera, aprendendo a otimizar seus ângulos, campos
de visão e disposição na tela. Pratique o conteúdo resolvendo as questões a seguir.

1. Por que ao excluir a Main Camera um erro de renderização é apresentado?

9
2. Como se dá a projeção Orthographic na cena?

Passo a passo:
1. Abra o Unity e clique em New.
2. Para o nome do novo projeto defina Exemplo Camera
3. Mantenha a opção 3D habilitada e clique em Create project.
4. Clique em GameObjetct, selecione 3D Object e adicione um Cube.
5. Com o cubo selecionado, altere os eixos X, Y e Z de Scale para 2
6. Selecione a Main Camera e observe a caixa Camera Preview.
7. Clique na caixa de listagem da opção Clear Flags e selecione Solid Color.
8. Digite 30 no campo Field of View.
9. Clique em GameObject e selecione Camera.
10. Altere o eixo Z de Position da nova câmera para -10
11. Selecione a Main Camera e altere o valor de Depht para 0
12. Em Viewport Rect, altere os valores de W e H para 0.5
13. Observe as alterações na aba Game.

14. Para encerrar, feche o Unity sem salvar as alterações na cena.

7. CÂMERAS E ILUMINAÇÃO - 1
Nesse capítulo conhecemos os tipos de iluminação que podem ser encontrados no componente
Light. Para exercitar o aprendizado, resolva as questões abaixo.

10
1. Relacione as opções abaixo com suas respectivas descrições:
( 1 ) Culling Mask
( 2 ) Render Texture
( 3 ) Range
( 4 ) Point

( ) Permite definir o alcance da incidência da luz.


( ) É uma textura que grava os frames renderizados por uma câmera.
( ) Possibilita visualizar todas as Layers que a câmera utilizará em sua renderização.
( ) É útil para criar iluminação dentro de construções, tochas, clareiras, etc.

Passo a passo:
1. Abra o Unity e clique em New.
2. Nomeie o projeto como Exemplo Luz e, mantendo o 3D, clique em Create project.
3. A partir da opção GameObject, da barra de menus, crie um cubo.
4. Altere os campos X, Y e Z de Scale do cubo para 2
5. Defina o valor 1 para o campo Y de Position.
6. Selecione o objeto Directional Light.
7. No componente Light, clique na cor referente à Color.
8. Utilize a paleta de cores para definir uma tonalidade de vermelho. Após isso, feche a ja-
nela de opções.
9. Clique na caixa de listagem Type e selecione Spot.
10. Altere o valor do campo Spot Angle para 60
11. Abaixo da barra de menus, selecione a ferramenta de rotação.
12. Utilize os eixos para rotacionar o objeto Directional Light afim de posicionar a luz no cen-
tro da superfície do cubo.
13. Exiba novamente as opções de Type e selecione Directional.

11
14. Rotacione os eixos do objeto de luz para visualizar suas alterações.
15. Para finalizar, feche o programa sem salvar a cena.

8. CÂMERAS E ILUMINAÇÃO - 2
Aprendemos como funciona o comportamento das luzes e mais alguns recursos que podem ser
utilizados para deixar o ambiente melhor. A seguir encontram-se algumas atividades para praticar o
assunto.

1. Qual a diferença entre os modos de renderização Baked e Real Time?

2. Geralmente, onde o recurso lightmap (mapas de luz) é utilizado?

Passo a passo:
1. Para começar, abra o Unity e crie um novo projeto 3D chamado Iluminação
2. Selecione o objeto Directional Light.
3. Clique na caixa de listagem do campo Type e selecione Area (baked only).
4. Após observar as alterações, exiba novamente as opções de Type e selecione Directional.
5. Clique em GameObject, direcione o cursor sobre 3D Object e selecione Plane.
6. Selecione o GameObject Main Camera e entre com os seguintes valores em sua posição:
0 para X, 1.5 para Y e -2.5 para Z.
7. Para a rotação no eixo X, defina o valor 12
8. Selecione o objeto Directional Light e defina sua posição em 0 para X, 3 para Y e 0 para Z,
caso ainda não estiver com estes valores.
9. Altere os valores da rotação para 30 em X, -60 em Y e 0 em Z.
10. Clique na barra do campo Color para alterar a cor da luz. Entre com os valores 200 para R,
150 para G, 50 para B e 255 para A. Depois, feche a janela de cor.
11. Adicione um novo cubo na cena.
12. Com o cubo selecionado, em seu componente Transform, entre com os seguintes valores
em Position: 1.5 para X, 0.55 para Y e 0 para Z.
13. Dentro da pasta Assets clique com o botão direito, direcione o cursor sobre Create e se-
lecione Material.
14. Tecle <Enter> para manter o nome padrão do material criado.
15. Com o material selecionado, em suas configurações apresentadas na aba Inspector, cli-
que no campo Color, localizado ao lado de Albedo.
16. Entre com os seguintes valores: 5 para R, 250 para G, 250 para B e 255 para A. Após isso,
feche a janela de cor.
17. Ative a opção Emission e clique em seu campo Color.
18. Defina 0 para R, 3 para G e 5 para B. Feche a janela de cor.

12
19. Aplique o novo material no cubo, clicando sobre o material e arrastando para o GameOb-
ject na aba Hierarchy.
20. Selecione o cubo e, na aba Inspector, ao lado direito do campo de nome do GameObject,
marque a caixa de verificação Static.
21. Selecione o objeto Directional Light, clique na caixa de listagem de Mode e selecione
Realtime.
22. Crie um objeto Cylinder e altere sua posição para 1 em X, 1 em Y e 1.5 em Z.
23. Marque a caixa de verificação Static.
24. Acesse a aba Game e observe que o cilindro recebe a iluminação do cubo.

25. Salve a cena como Luz e feche o Unity.

9. FÍSICA E COLISÕES - 1
Foi iniciado o estudo sobre os componentes Rigidbody e os colisores (Colliders). Para praticar
seu aprendizado, resolva os exercícios a seguir.

1. O que o componente Rigidbody permite? E o que o Unity faz quando esse componente é
adicionado a um GameObject?

13
2. Qual a função da opção Edit Collider?

Passo a passo:
1. Inicie o Unity e crie um novo projeto 3D chamado Colisões
2. Selecione o GameObject Main Camera e entre com os seguintes valores de posição: 0
para X, 2 para Y e -7 para Z.
3. Crie um GameObject Cube na cena.
4. No componente Transform do cubo, em Scale, entre com os valores 5 para X, 1 para Y e 5
para Z. Além disso, mantenha todos os campos de posição zerados.
5. Altere o nome desse cubo para Chão
6. Crie um GameObject Sphere e altere sua posição para 0 em X, 5 em Y e 0 em Z.
7. Crie um novo material na aba Project, clicando com o botão direito em seu conteúdo,
direcionando o cursor sobre Create e selecionando Material.
8. Com o novo material selecionado, clique em seu campo de cor ao lado de Albedo.
9. Defina um tom de vermelho de sua preferência e feche a janela de cores.
10. Aplique o material na esfera, arrastando-o até o GameObject na aba Hierarchy.
11. Clique no botão Add Component para adicionar um componente ao cubo.
12. Em suas opções clique em Physics e selecione Rigidbody.
13. Clique no botão Play para reproduzir a cena.

14. Observe que a esfera cai e para no plano. Clique em Play novamente para voltar ao modo
de edição.
15. Com a esfera selecionada, tecle <F> para focar a visualização nela.
16. Em Center, do componente Sphere Collider, altere o valor do campo Y para 0,75

14
17. Dê Play novamente e observe o que acontece na cena.
18. Clique em Play para voltar ao modo de edição.
19. Volte o valor do campo Y de Center para 0
20. Salve a cena como Exemplo de Colisões e feche o Unity.

10. FÍSICA E COLISÕES - 2


Durante esse capítulo aprendemos mais sobre o componente Rigidbody e as propriedades dos
colisores. Faça as atividades abaixo para praticar o conteúdo apresentado.

1. Analise as afirmações a seguir:


( 1 ) O componente Mesh Collider é adicionado automaticamente aos GameObjects no mo-
mento de sua criação.
( 2 ) O Mesh Collider tenta cobrir o máximo possível da área da malha de acordo com a forma
geométrica do objeto.
( 3 ) Ao ativar a opção Is Kinematic de um componente Rigidbody, o objeto vai se mover
pelos eixos automaticamente.
( 4 ) Se utiliza a propriedade Trigger do componente Collider para detectar uma colisão entre
dois GameObjects.

Estão corretas somente:


a) 1 e 2.
b) 1 e 4.
c) 2 e 3.
d) 3 e 4.

Passo a passo:
1. Execute o Unity e clique em Open.
2. Na janela para localizar um arquivo, busque e selecione a pasta Colisões. Se precisar de
ajuda, peça ao seu instrutor.
3. Para abrir o projeto clique no botão Selecionar pasta.
4. Selecione o objeto Chão e desative-o clicando na caixa de verificação ao lado de seu nome
na aba Inspector.
5. Acesse o menu GameObject e adicione o objeto 3D Plane.
6. Clique com o botão direito sobre o nome do componente Transform de Plane e selecione
a opção Reset para resetar seus valores.
7. Selecione o GameObject Sphere e tecle <Delete> para removê-lo.
8. Acesse o menu Assets, direcione o cursor sobre Import Package e selecione o item Vehi-
cles.
9. Clique em Import na nova janela e aguarde a importação dos arquivos.
10. Na aba Project, abra a pasta Standard Assets, depois abra as pastas Vehicles, Car e Pre-
fabs.
11. Arraste o Prefab Car para a aba Hierarchy para instanciá-lo.
12. Selecione o carro e entre com os valores 0 em X, 3 em Y e 0 em Z nas propriedades de
posição do componente Transform.
13. Clique na seta ao lado do GameObject Car na aba Hierarchy para expandir seus filhos.
14. Expanda também os filhos de SkyCar.
15. Na aba Project clique em Assets e aplique o material no item SkyCarBody.

15
16. Oculte os filhos de Car clicando novamente em sua seta.

17. Clique em Play para reproduzir a cena.


18. Movimente o carro utilizando as teclas de setas.
19. Clique em Play novamente para voltar ao modo de edição.
20. Selecione o objeto Plane e altere o campo Z de Scale para 10
21. Dê Play novamente e movimente o carro pela cena.
22. Desative o botão Play.
23. Selecione o carro e marque a opção Is Kinematic do componente Rigidbody.
24. Ative o botão Play e repare que o carro não se movimenta.
25. Desative o botão Play e exclua o GameObject Car.
26. Volte o valor do campo Z da escala do objeto Plane para 1
27. Insira um objeto 3D Capsule e defina sua posição em 0 para X, 3 para Y e 0 para Z.
28. Aplique o material no novo objeto.
29. Clique em Add Component, direcione o cursor em Physics e selecione Rigidbody.
30. No componente Capsule Collider marque a opção Is Trigger.
31. Clique em Play e observe o que acontece na cena.
32. Desative o botão Play.
33. Para encerrar, salve a cena e feche o Unity.

11. INTRODUÇÃO À CODIFICAÇÃO


Iniciamos os estudos acerca dos scripts, aprendendo a como funciona a codificação no Unity.
Para desenvolver seu entendimento sobre o assunto, faça as atividades abaixo.

16
1. Por que se deve prestar muita atenção ao nome estipulado para o script?

2. Em relação aos métodos iniciais dos scripts, o que acontece ao se ativar o botão Play no Unity?

Passo a passo:
1. Abra o Unity e o projeto Colisões.
2. Na aba Project, clique com o botão direito no conteúdo vazio da pasta Assets, direcione
o cursor sobre Create e selecione C# Script.
3. Nomeie o script como TesteScript e abra-o com um duplo clique.
4. No Visual Studio posicione o cursor dentro da linha 6, que atualmente está em branco, e
tecle <Enter>.
5. Na nova linha digite o comando void Awake e tecle <Espaço>.
6. O programa já preenche o método com as chaves e parênteses necessários. Dentro do
método, digite o seguinte código: Debug.Log(“Testando Awake”);
7. Agora posicione o cursor entre as chaves do método Start e digite: Debug.Log(“Testando
Start”);

8. Salve o script e volte ao Unity.


9. Atribua o script ao GameObject Capsule, arrastando-o até a aba Hierarchy.
10. Exiba a aba Console ao lado de Project.
11. Ative o botão Play e observe as informações na aba Console.
12. Desative o botão Play.
13. Selecione o objeto Capsule e desative o componente do script desmarcando sua caixa de
verificação.

17
14. Clique em Play e observe que somente o método Awake foi chamado.
15. Desative o botão Play e volte a ativar o componente do script em Capsule.
16. Exiba a aba Project e vincule o script ao GameObject Plane.
17. Acesse a aba Console e clique em Play.
18. Observe as informações duplicadas e desative o botão Play.

19. Selecione o objeto Plane, clique na engrenagem do componente de script e selecione


Remove Component.
20. Salve as alterações na cena e feche os programas abertos.

12. INSPECTOR
Aprendemos que é possível referenciar componentes e GameObjects através de um script e
também como os atributos de um script podem ser gerenciados através da aba Inspector. Exercite seu
aprendizado resolvendo os exercícios a seguir.

1. O que acontece com os valores das variáveis quando o modo jogável termina?

2. Quando se utiliza a propriedade SerializeField?

Passo a passo:
1. Execute o Unity e abra o projeto Colisões.
2. Acesse o menu Assets e clique em Open C# Project.
3. Em Gerenciador de Soluções, expanda a pasta Assets do projeto e selecione o item Tes-
teScript.
4. Com o script aberto, clique na linha 6 e tecle <Enter>.
5. Digite public string testeTexto; e tecle <Enter> para pular uma linha.
6. Apague o conteúdo entre parênteses do método Awake. Então, digite: “Diga algo: ” +
testeTexto
7. No método Update repita o código inserido no método Awake, digitando Debug.
Log(“Diga algo: “ + testeTexto);
8. Apague o comando dentro do método Start.
9. Salve o script e volte ao Unity.
10. Selecione o objeto Capsule e no campo Teste Texto, do componente de script da aba
Inspector, digite: Olá!

18
11. Acesse a aba Console e clique no botão Play.
12. Ainda com o botão Play ativado, altere o campo Teste Texto para Tchau!
13. Observe as alterações na aba Console e, depois, desative o botão Play.
14. Volte ao Visual Studio, clique ao final da linha da variável criada anteriormente e tecle
<Enter>.
15. Na linha em branco digite: public GameObject floor;
16. No método Start digite: floor.name = “Novo Nome”;
17. Tecle <Enter> e na nova linha digite floor.
18. Na lista de atributos selecione gameObject. Continue o código digitando .SetActive(false);

19. Salve as alterações e volte ao Unity.


20. Arraste o objeto Plane, da aba Hierarchy, para o campo Floor, da aba Inspector.
21. Ative o botão Play e observe as alterações no objeto Plane.
22. Desative o botão Play.
23. Para finalizar salve a cena, feche o Unity e o Visual Studio.

13. MÉTODOS DE COMPONENTES


Nesse capítulo aprendemos um pouco mais sobre como se utiliza o mecanismo interno de co-
dificação do Unity e também aplicamos conhecimentos prévios de outros capítulos. A seguir encon-
tram-se alguns exercícios para complementar seu estudo.

19
1. Nas lacunas abaixo marque V para verdadeiro ou F para falso de acordo com as afirmações:
( ) Os principais atributos do componente Transform são do tipo Vector3.
( ) O GetComponent pode ser usado para acessar qualquer componente.
( ) Utiliza-se o método Start para inicializar as referências e o método Awake para inicializar
valores de propriedades.
( ) A classe Vector3 é utilizada para representar um vetor no espaço bidimensional.

Passo a passo:
1. Para começar, abra o Unity e o projeto Colisões.
2. Acesse a aba Project e dê um duplo clique em TesteScript para abri-lo no Visual Studio.
3. Clique no fim da linha do atributo floor e tecle <Enter>.
4. Na nova linha digite: public Transform floorTransform;
5. Apague o conteúdo que está dentro do método Start. Depois, na linha em branco, digite
o seguinte código: floorTransform = floor.GetComponent<Transform>();
6. Volte ao Unity e selecione o GameObject Capsule.
7. Ative o botão Play e observe na aba Inspector o campo Floor Transform.
8. Desative o botão Play.
9. Apague todos os atributos da classe e o conteúdo dentro dos métodos Awake, Start e
Update.
10. No método Start entre com o código: transform.position = new Vector3(3, 3, 1);
11. Salve o script e volte ao Unity.
12. Acesse a aba Game para observar melhor as alterações. Então, ative o botão Play.
13. Repare que o objeto teve sua posição alterada para as coordenadas especificadas no
script. Desative o botão Play.
14. Retorne ao Visual Studio.

20
15. Crie um novo atributo antes da linha do método Awake, digitando: public Rigidbody
mBody;
16. No método Awake digite: mBody = GetComponent<Rigidbody>();
17. Clique no fim da linha de comando dentro do método Start e tecle <Enter>.
18. Na nova linha em branco digite: mBody.AddForce(Vector3.up * 300f);
19. Salve o script e retorne ao Unity.
20. Com a aba Game sendo exibida, clique no botão Play.
21. Visualize as alterações no objeto durante a execução da cena. Desative o botão Play.
22. Salve a cena e feche os programas abertos.

14. TAGS
Com o conteúdo desse capítulo conhecemos o sistema de Tags e algumas técnicas para encon-
trar GameObjects em uma cena. Resolva os exercícios para colocar em prática seu aprendizado.

1. Para que se utiliza o método Find da classe GameObject?

2. O que é possível fazer com o método FindGameObjectsWithTag?

Passo a passo:
1. Abra o Unity e o projeto Colisões.
2. Na aba Hierarchy, clique com o botão direito sobre o objeto Capsule e selecione Rename.
3. Tecle <Backspace> para apagar o nome atual, depois digite Player e confirme teclando
<Enter>.
4. Em seu componente Rigidbody ative a opção Is Kinematic.
5. Na aba Project clique com o botão direito no conteúdo vazio da pasta Assets, direcione o
cursor sobre Create e selecione Folder.
6. Nomeie a pasta como Prefabs e tecle <Enter> para confirmar.
7. Repita o processo para criar uma pasta chamada Scripts e outra chamada Materials
8. Arraste o item New Material para a pasta Materials e o item TesteScript para a pasta
Scripts.
9. Abra a pasta Prefabs com um duplo clique.
10. Crie um prefab do objeto Player, arrastando o nome do GameObject da aba Hierarchy
para dentro da pasta na aba Project.
11. Na aba Hierarchy clique com o botão direito sobre o GameObject Player e, utilizando a
opção Rename, o renomeie para Enemy
12. Acesse a aba Material e crie um novo material dentro dela chamado Enemy Material
13. Altere a cor do novo material para um tom de roxo de sua preferência.
14. Aplique o novo material no objeto Enemy.
15. Através da aba Project acesse a pasta Prefabs e crie um prefab do GameObject Enemy
dentro da pasta.

21
16. Remova o GameObject Enemy da cena, selecionando-o na aba Hierarchy e teclando <De-
lete>.
17. Remova também o objeto Chão.
18. Instancie os dois prefabs na cena, arrastando-os da aba Project até Hierarchy.
19. Com o objeto Player selecionado, altere o campo Y de Position para 2
20. Selecione o objeto Enemy e altere o campo X de Position para -2
21. Crie um GameObject vazio através dos menus.
22. Renomeie o novo GameObject para CriadorDeInimigos
23. Posicione o novo GameObject no centro do mundo, definindo o valor 0 em seus campos
de posição.
24. Selecione o objeto Player e, na aba Inspector, altere sua tag para Player.
25. Selecione o GameObject Enemy e clique com o botão direito em seu nome. Duplique-o
duas vezes através da opção Duplicate.
26. Altere a posição do Enemy (1) no eixo Y para o valor 1
27. Altere a posição do Enemy (2) no eixo X para 5
28. Com a tecla <Ctrl> pressionada, selecione todos os Enemy na aba Hierarchy e arraste-os
para o nome do GameObject CriadordeInimigos.
29. Selecione o CriadorDeInimigos e, através da aba Inspector, clique em Tag e selecione Add
Tag.
30. Em Tags & Layers clique no ícone de adição para adicionar um item na lista de tags. Digite
Spawners e clique em Save.
31. Selecione novamente o GameObject CriadorDeInimigos e aplique a tag Spawners.
32. Seguindo os mesmos passos, adicione mais uma tag chamada Enemies.
33. Atribua a nova tag Enemies aos GameObjects filhos do CriadorDeInimigos.
34. Acesse a pasta Scripts e crie um novo script chamado ObjectFinder
35. Abra o novo script com um duplo clique.

22
36. Posicione o cursor na linha 6 e tecle <Enter>.
37. Digite o código: public GameObject enemiesHolder;
38. Tecle <Enter> e, em seguida, digite: public Transform[] enemies;
39. No método Start insira o código: enemiesHolder = GameObject.FindWithTag(“Spawners”);
40. Tecle <Enter> e digite: Transform enemiesHolderTrans = enemiesHolder.
GetComponent<Transform>();
41. Tecle <Enter> e insira o código: enemies = new Transform[enemiesHolderTrans.
childCount];
42. Pule uma linha e digite: int i = 0;
43. Pressione <Enter> novamente e escreva: foreach (Transform t in enemiesHolderTrans)
{enemies[i++] = t;}
44. Salve o script e retorne ao Unity.
45. Atribua o script ObjectFinder ao GameObject Player.
46. Selecione o objeto Player clique no botão Play.
47. Observe pela aba Inspector que os campos do script foram preenchidos automaticamente
de acordo com as tags definidas no código. Desative o botão Play.
48. Para encerrar, salve a cena e feche os programas.

15. INSTÂNCIAS DE GAMEOBJECTS


Aprendemos a como instanciar e referenciar GameObjects a partir de um script. Exercite seu
aprendizado resolvendo as questões abaixo.

1. Quais os três parâmetros do método Instantiate?

2. O que a variável transform com “T” minúsculo indica?

Passo a passo:
1. Inicie o Unity e abra o projeto Colisões.
2. Exclua o GameObject Player da cena.
3. Selecione todos os GameObjects filhos de CriadorDeInimigos e remova-os teclando <De-
lete>.
4. Na aba Project acesse a pasta Scripts e crie um novo script chamado ObjectSpawner
5. Atribua o script ObjectSpawner ao GameObejct CriadorDeInimigos.
6. Selecione o CriadorDeInimigos para visualizar o script na aba Inspector.
7. Na aba Project dê um duplo clique nesse script para abri-lo no Visual Studio.
8. Posicione o cursor na linha 6 e tecle <Enter>.
9. Na linha 7 digite o código: public GameObject playerPrefab; e tecle <Enter>.
10. Na linha 8 digite: public GameObject enemyPrefab; e tecle <Enter>.
11. Na linha 9 insira o código: public GameObject player; e tecle <Enter>.
12. Na linha 10 digite: public int enemiesCount; e pressione <Enter>.
13. Na linha 11 insira o código: public GameObject[] enemies; e tecle <Enter>.
14. Dentro do método Start, na linha 14, digite: if (playerPrefab)

23
15. Tecle <Enter>, abra uma chave teclando { e pressione <Enter> novamente.
16. Dentro do if, na linha 16, digite o código: player = Instantiate(playerPrefab, transform.
position, transform.rotation) as GameObject;
17. Posicione o cursor após a chave da linha 17 e tecle <Enter>.
18. Na linha 18 digite: enemies = new GameObject[enemiesCount];
19. Na linha 19 insira o código: for (int i = 0; i < enemiesCount; i++)
20. Tecle <Enter>, abra uma chave teclando { e pressione <Enter> novamente.
21. Dentro do for, digite: enemies[i] = Instantiate(enemyPrefab, new Vector3(1f + i, 0.8f + i,
1f), enemyPrefab.transform.rotation);

22. Salve o script e retorne ao Unity.


23. Selecione o GameObject CriadorDeInimigos.
24. Na aba Project procure pelo arquivo prefab Player. Clique no prefab e arraste-o até o
atributo Player Prefab do script ObjectSpawner, que está na aba Inspector.
25. Arraste o prefab Enemy para o atributo Enemy Prefab do script na aba Inspector.
26. Na aba Inspector altere o valor de Enemies Count para 3
27. Ative o botão Play e observe as alterações na cena.
28. Desative o botão Play.
29. Para finalizar, salve a cena e feche os programas abertos.

16. MÉTODO UPDATE


Foi ensinado a como destruir as referências de GameObjects na cena e aprendemos para que
servem os métodos Update, FixedUpdate e LateUpdate. Na sequência encontram-se alguns exercícios
para prática.

24
1. Relacione os métodos abaixo com suas respectivas características:
( 1 ) OnMouseDown
( 2 ) Translate
( 3 ) FixedUpdate
( 4 ) Update

( ) É utilizado para mover um GameObject em uma cena, mas este não é o único que pode
exercer essa função.
( ) É invocado apenas antes de cada atualização de física e possui um intervalo consistente.
( ) É invocado toda vez que se clica em cima de um GameObject.
( ) É utilizado para monitorar entradas e outros eventos que ocorrem regularmente na cena.

Passo a passo:
1. Execute o Unity e abra o projeto Colisões.
2. Na aba Project abra a pasta Scripts e crie um script chamado Destroyer
3. Vá para a pasta Prefabs e selecione o prefab Enemy.
4. Na aba Inspector clique no botão Add Component e adicione o script Destroyer.
5. Selecione o prefab Player e também adicione o script Destroyer.
6. Abra o script Destroyer no Visual Studio.
7. Posicione o cursor na linha 6, tecle <Enter> e digite: public float speedPerSeconds;
8. Apague o conteúdo das linhas 8 e 13.
9. Posicione o cursor na linha 8 e tecle <Enter>. Na linha 9 digite void Awake() { e tecle
<Enter>.
10. Dentro do método Awake digite: speedPerSeconds = 2f;
11. Dentro do método Update digite: transform.Translate(speedPerSeconds * Time.
deltaTime, 0, 0);
12. Posicione o cursor após a chave da linha 20 e tecle <Enter>.
13. Crie um novo método digitando: void OnMouseDown() { e tecle <Enter>.
14. Dentro do método OnMouseDown digite: Destroy(gameObject, 2f);
15. Salve o script e volte ao Unity.

25
16. Clique em Play e observe a movimentação do objeto.
17. Desative o botão Play.
18. Dentro da pasta Scripts crie um script chamado FollowCamera
19. Abra o script com um duplo clique e apague todos os métodos da classe.
20. Na linha 7 digite: public GameObject target;
21. Tecle <Enter> e crie um novo método digitando: void LateUpdate(){ Depois, tecle <Enter>
para completar a estrutura do método automaticamente.
22. Dentro do método LateUpdate digite: transform.LookAt(target.transform);

23. Salve o script e retorne ao Unity.


24. Atribua o script FollowCamera ao GameObject Main Camera.
25. Selecione o GameObject CriadorDeObjetos e desative-o através da aba Inspector.
26. Adicione o prefab Player na aba Hierarchy.
27. Com o GameObject Player selecionado, altere o valor do atributo Speed Per Seconds para
1
28. Selecione o GameObject Main Camera. Clique e arraste o nome do GameObject Player,
da aba Hierarchy, até o atributo Target, do script FollowCamera.
29. Clique no botão Play e observe os resultados.
30. Desative o botão Play.
31. Para terminar, salve a cena, feche o Unity e o Visual Studio.

17. INPUTS E MOVIMENTAÇÃO - 1


Nesse capítulo vimos uma introdução ao módulo de entradas do Unity e como utilizar seus
valores para eventos internos do jogo. Faça os exercícios a seguir para desenvolver seu entendimento
sobre o assunto.

1. O que é possível fazer a partir da opção Build Settings do menu File?

26
2. O que a propriedade Dead representa para um input?

Passo a passo:
1. Abra o Unity e o projeto Colisões.
2. Na aba Project selecione a pasta Scripts.
3. Crie um script chamado MyController e abra-o no Visual Studio.
4. Apague o conteúdo das linhas 7 e 12.
5. Na linha 7 declare a variável: public float turnSpeed = 100.0f;
6. Na linha 8 digite: public float moveSpeed = 5.0f;
7. Dentro do método Update, na linha 15, digite o código: float turnValue = Input.
GetAxis(“Horizontal”) * Time.deltaTime * turnSpeed;
8. Na linha seguinte digite: float moveValue = Input.GetAxis(“Vertical”) * Time.deltaTime
* moveSpeed;
9. Insira o código na linha seguinte: transform.Rotate(0, turnValue, 0);
10. Complete o método Update digitando: transform.Translate(0, 0, moveValue);

11. Salve o script e retorne ao Unity.


12. Atribua o novo script ao GameObject Player.
13. Selecione o GameObject Player e remova o seu componente Destroyer.
14. Na aba Hierarchy clique com o botão direito no nome do GameObject Player, direcione o
cursor sobre 3D Object e selecione Cube.
15. Ative o botão Play e utilize as setas do teclado para movimentar e rotacionar o GameObject.
16. Desative o botão Play.
17. Selecione a aba Game e ative a opção Maximize On Play.
18. Ative novamente o botão Play.
19. Após visualizar e movimentar o objeto na cena em execução, desative o botão Play.
20. Salve a cena e feche os programas abertos.

27
18. INPUTS E MOVIMENTAÇÃO - 2
Continuamos com o conteúdo de programação, aprendendo um pouco mais sobre o uso de
inputs com física e também damos início à um protótipo de um jogo. A seguir encontram-se alguns
exercícios para treinar seu aprendizado.

1. O que o botão Apply da aba Inspector faz?

2. O que é preciso fazer quando não se está produzindo um movimento cinemático, mas apenas
um movimento onde não há gravidade?

Passo a passo:
1. Para iniciar, abra o Unity.
2. Crie um novo projeto 3D chamado Jogo de Nave
3. Localize a pasta StarSparrow no computador e arraste-a para a pasta Assets da aba Pro-
ject. Se precisar de ajuda para localizar a pasta, peça ao seu instrutor. Essa pasta contém
arquivos de objetos 3D adquiridos na Asset Store da comunidade do Unity. Esses objetos
foram criados por Ebal Studios.
4. Faça o mesmo para importar a pasta SpaceSkyBox. Dentro dessa pasta há arquivos para a
construção de Skybox, adquiridos através da Asset Store da comunidade do Unity. Esses
objetos foram criados por Hedgehog Team.
5. Clique com o botão direito dentro da pasta Assets, direcione o cursor sobre Create e se-
lecione Folder.
6. Nomeie a pasta como Scripts
7. Crie mais duas pastas dentro de Assets, as pastas Dependencies e Prefabs_done.
8. Arraste as pastas StarSparrow e SpaceSkyBox para dentro da pasta Dependencies.
9. Dentro da pasta Scripts crie um script chamado SpaceshipController
10. Abra a pasta StarSparrow. Dentro dela abra Prefabs e, em seguida, Examples.
11. Arraste o prefab Example_2 para a aba Hierarchy.
12. Abra a pasta Prefabs_done e arraste o GameObject Example_2, da aba Hierarchy, para
dentro dela.
13. Exclua o GameObject Example_2 da aba Hierarchy.
14. Salve a cena como Levels dentro da pasta Assets.
15. Na aba Hierarchy selecione o GameObject Main Camera.
16. Na aba Inspector clique no botão Add Component.
17. Procure pela opção Rendering, selecione-a e clique no componente Skybox.
18. Na aba Project abra as pastas Assets, Dependencies, SpaceSkyBox e DeepSpaceBlue.
19. Arraste o arquivo de material DSG para o atributo Custom Skybox, do componente Sky-
box da Main Camera.
20. Na aba Project selecione a pasta Prefabs_done. Depois, renomeie o prefab Example_2
para BlueShip
21. Crie uma instância de BlueShip na cena, arrastando o prefab para a aba Hierarchy.

28
22. Adicione o componente Rigidbody ao GameObject BlueShip.
23. Para o GameObject BlueShip atribua o valor 0 para todos os campos de posição e rotação.
24. Através da aba Hierarchy clique sobre o GameObject Main Camera e arraste-o para cima
do GameObject BlueShip.
25. Altere as propriedades de posição da câmera para 0 em X, 2.5 em Y e -5 em Z.
26. Altere o valor da rotação no eixo X para 15 e mantenha os outros valores como 0.
27. Selecione o GameObject BlueShip e aplique a Tag Player a ele.
28. Clique no botão Apply da aba Inspector.
29. Abra o script SpaceshipController no Visual Studio.
30. Posicione o cursor acima da linha 4 e tecle <Enter>.
31. Entre com o seguinte código na linha 5: [RequireComponent(typeof(Rigidbody))]
32. Apague o conteúdo das linhas 8 e 13.
33. Posicione o cursor na linha 8 e digite: private Rigidbody shipBody;
34. Na linha seguinte digite: public float shipSpeed;
35. Declare um outro atributo na linha debaixo, digitando: public float shipTilt;
36. Apague o método Start e crie um método Awake no lugar. Como ambos possuem a mes-
ma estrutura vazia, apenas altere o nome do método. Selecione o nome e tecle <Delete>.
Então, digite Awake
37. Dentro do método Awake digite o código: shipBody = GetComponent<Rigidbody>();
38. Altere o método Update para FixedUpdate, assim como foi feito com o método Start.
39. Dentro do método FixedUpdate digite o seguinte código: float moveHorizontal = Input.
GetAxis(“Horizontal”);
40. Na linha seguinte digite o seguinte código: float moveVertical = Input.GetAxis(“Vertical”);
41. Tecle <Enter> duas vezes para pular uma linha.
42. Digite o seguinte código: Vector3 movement = new Vector3(moveHorizontal, 0f, move-
Vertical);
43. Na próxima linha digite o código: shipBody.velocity = movement * shipSpeed;

44. Salve o script e volte ao Unity.

29
45. Com o GameObject BlueShip selecionado, desative a opção Use Gravity do componente
Rigidbody.
46. Atribua o script SpaceshipController ao GameObject BlueShip.
47. Na aba Inspector defina o valor 10 na variável Ship Speed.
48. Ative a aba Game e marque a opção Maximize On Play.
49. Ative a aba Scene novamente e acione o botão Play. Veja os resultados e desative o botão
Play.
50. Crie um GameObject Sphere e altere sua posição para -6 em X e 6 em Z. Mantenha Y em
0.
51. Duplique a esfera 3 vezes, totalizando quatro na cena.
52. Mantenha todas as esferas com as posições -6 no eixo X e 0 no eixo Y.
53. Selecione o GameObject Sphere (1) e altere seu campo Z de posição para 36
54. Selecione o Sphere (2) e defina o valor 66 no eixo Z da posição.
55. Por fim, selecione Sphere (3) e defina o valor 96 no eixo Z da posição
56. Ative o botão Play e controle a nave utilizando as teclas de direção.
57. Após testar o jogo, desative o botão Play.
58. Para terminar, salve a cena e feche os programas abertos.

19. FÍSICA E COLISORES


Aqui aprendemos mais sobre o motor de física do Unity, o sistema de colisão e seus métodos.
Também avançamos com o nosso protótipo. Para complementar seu estudo, faça as atividades a se-
guir.

1. Analise as afirmações:
( 1 ) A propriedade angularVelocity, do componente Rigidbody, representa um vetor de ve-
locidade angular com medidas em graus radianos por segundo.
( 2 ) O método OnCollisionStay é utilizado no evento Ao sair da colisão.
( 3 ) Através do parâmetro collisionInfo, que possui as informações da colisão, é possível ob-
ter até mesmo a referência do GameObject que colidiu.
( 4 ) Os eventos de colisão somente são emitidos pelos colisores quando um dos GameOb-
jects possui um componente Rigidbody cinemático.

Estão corretas somente:


a) 1 e 2.
b) 1 e 3.
c) 2 e 4.
d) 3 e 4.

Passo a passo:
1. Abra o Unity e o projeto Jogo de Nave.
2. Localize a pasta AsteroidPack no computador e arraste-a para a pasta Assets da aba Pro-
ject. Essa pasta contém arquivos de objetos 3D adquiridos na Asset Store da comunidade
do Unity. Esses objetos foram criados por Mark Dion.
3. Arraste a pasta AsteroidPack para cima da pasta Dependencies.
4. Dentro da pasta Scripts abra o script SpaceShipController no Visual Studio.
5. No método FixedUpdate adicione a seguinte linha de código: shipBody.rotation = Qua-
ternion.Euler(0.0f, 0.0f, shipBody.velocity.x * -shipTilt);

30
6. Salve o script e volte ao Unity.
7. Selecione o GameObject BlueShip.
8. Na aba Inspector altere o valor de Ship Speed, do script SpaceshipController, para 15
9. Defina o valor 1 para o atributo Ship Tilt.
10. Ainda na aba Inspector, clique no botão Apply para salvar as alterações no prefab.
11. Salve a cena e pressione o botão Play.
12. Utilize as setas do teclado para movimentar a nave, testando a nova jogabilidade. Após
isso, desative o botão Play.
13. Com o GameObject BlueShip selecionado, clique no botão Add Component e selecione o
item Mesh Collider em Physics.
14. Ative a propriedade Convex do componente Mesh Collider.
15. Selecione o GameObject Sphere.
16. Na aba Inspector altere o valor da posição no eixo X para 0.6 e altere o eixo Z para 10
17. Altere também os valores de escala para 10 em X e 10 em Y. Mantenha 1 em Z.
18. Selecione novamente o GameObject BlueShip e ative o botão Play.
19. Bata a nave na parede para testar a colisão. Desative o botão Play.
20. Volte ao Visual Studio e abaixo do método FixedUpdate crie um novo método, digitando:
void OnCollisionEnter(Collision collisionInfo)
21. Tecle <Enter>, pressione { e tecle <Enter> novamente. Assim, a estrutura do método é
completada automaticamente.
22. Seguindo os mesmos passos crie o método: void OnCollisionStay(Collision collisionInfo)
{}
23. Em seguida, crie também o método: void OnCollisionExit(Collision collisionInfo){}
24. Dentro do método OnCollisionEnter digite o seguinte código: Debug.Log(“Entrou em
colisão com: “ + collisionInfo.gameObject.name);
25. Dentro do método OnCollisionStay adicione o código: Debug.Log(“Está colidido com: “ +
collisionInfo.gameObject.name);
26. No método OnCollisionExit digite: Debug.Log(“Saiu da coisão com: “ + collisionInfo.
gameObject.name);

31
27. Salve o script e retorne ao Unity.
28. Selecione a aba Game e desative a opção Maximize On Play.
29. Selecione novamente a aba Scene e ative a aba Console. Certifique que a opção Clear On
Play esteja ativada.
30. Ative o botão Play e bata a nave na parede. Visualize os resultados na aba Console.
31. Saia da parede e observe os resultados em Console.
32. Desative o botão Play e salve a cena.
33. Feche o Unity e o Visual Studio.

20. COLISÃO DE TRIGGERS


Foi estudado mais sobre o sistema de colisão do Unity, conhecemos a diferença entre as colisões
e colisões gatilho, aprendendo também a como utilizá-las. Resolva os exercícios a seguir para praticar
o conteúdo.

1. O que a opção Is Trigger faz quando ativada?

2. Quais são os três métodos utilizados pelos eventos gatilho e quando são usados?

Passo a passo:
1. Para iniciar abra o Unity e o projeto Jogo de Nave.
2. Selecione a nave, clique na aba Scene e pressione a tecla <F>.
3. No cubo dos eixos da aba Scene clique no eixo Z para obter uma visão frontal da nave.
4. Abra a pasta Scripts e dê um duplo clique sobre SpaceshipController.
5. Posicione o cursor antes da linha do comando RequireComponent e pressione <Enter>
duas vezes para abrir espaço.
6. No meio dessas linhas digite o código: [System.Serializable]
7. Na linha seguinte digite: public class Bound
8. Tecle <Enter>, pressione { e tecle <Enter> novamente.
9. Dentro da nova classe digite: public float xMin, xMax, yMin, yMax;
10. Na classe SpaceshipController digite antes do método Awake: public Bound boundary;
11. Após a linha que foi atribuído o valor à shipBody.velocity, tecle <Enter> duas vezes.
12. Na linha em branco digite: shipBody.position = new Vector3
13. Pressione <Enter>, digite ( e tecle <Enter> novamente.
14. Apague o segundo parêntese criado e digite o código: Mathf.Clamp(shipBody.position.x,
boundary.xMin, boundary.xMax),
15. Tecle <Enter> e digite: Mathf.Clamp(shipBody.position.y, boundary.yMin, boundary.
yMax),
16. Tecle <Enter> e digite: 0f
17. Na linha debaixo digite: );

32
18. Na linha em que o valor da variável local movement foi atribuído, inverta os parâmetros do
eixo Y com o Z, para obter o código: Vector3 movement = new Vector3(moveHorizontal,
moveVertical, 0f);
19. Salve o script e volte ao Unity.
20. Selecione o GameObject BlueShip.
21. No componente SpaceshipController exiba os campos de Boundary.
22. Altere o valor de X Min para -15, o valor de X Max para 15, Y Min para -10 e Y Max para 10
23. Clique no botão Apply para aplicar as alterações no prefab.
24. Exclua todas as esferas da cena.
25. Na aba Project abra as pastas Assets, Dependencies, AsteroidsPack, Assets e Prefabs.
26. Crie uma instância de cada prefab em nossa cena.
27. Clique com o botão direito sobre o GameObject Asteroid 1 e o renomeie para Asteroid_p
28. Defina seu valor de posição no eixo Y como 8 e mantenha X e Z em 0.
29. Renomeie o Asteroid 2 para Asteroid_m e altere sua posição no eixo X para -7 Mantenha
Y e Z em 0.
30. Seguindo os mesmos passos, renomeie o Asteroid 3 para Asteroid_g Em seu eixo X de
posição altere o valor para 7 e mantenha Y e Z em 0.
31. Selecione o GameObject Asteroid_p e adicione o componente Sphere Collider a ele.
32. No atributo Radius entre com o valor 0.8 e ative a opção Is Trigger.
33. Abra a pasta Scripts e crie um novo script chamado Asteroid
34. Atribua o novo script ao GameObject Asteroid_p.
35. Abra o novo script com um duplo clique.
36. Após o método Update crie o método OnTriggerEnter na classe Asteroid. Digite: void
OnTriggerEnter(Collider other){}
37. Dentro do método OnTriggerEnter digite o seguinte código: if (other.CompareTag(“Player”))
38. Na linha seguinte digite: Debug.Log(“Colisão com a NAVE!”);

39. Salve o script e volte ao Unity.


40. Clique na aba Console e ative o botão Play.
41. Colida a nave com o asteroide de cima.
42. Observe os outputs na aba Console e desative o botão Play.
43. Acesse a aba Project e selecione a pasta Prefabs_done.
44. Crie um prefab do GameObject Asteroid_p.
45. Exclua o GameObject Asteroid_p da cena.
46. Selecione o GameObject Asteroid_m e adicione o componente Capsule Collider.

33
47. Ative a opção Is Trigger. Nos atributos Center do colisor entre com os valores 0.03 em X,
0.3 em Y e mantenha Z em 0.
48. No atributo Radius entre com o valor 0.9 e no atributo Height entre com o valor 3.7
49. Anexe o script Asteroid ao GameObject Asteroid_m.
50. Crie um prefab do GameObject Asteroid_m e, depois, o remova da cena.
51. Selecione o GameObject Asteroid_g, adicione o componente Sphere Collider e ative a
opção Is Trigger.
52. Nos atributos de Center entre com os valores 0.29 em X, 0.32 em Y e 0.37 em Z.
53. Em Radius entre com o valor 1.3
54. Adicione outro componente Sphere Collider e também ative a opção Is Trigger.
55. Em Center entre com os valores -0.47 em X, -0.51 em Y e -0.25 em Z.
56. No atributo Radius entre com o valor 1.3
57. Anexe o script Asteroid ao GameObject Asteroid_g.
58. Crie um prefab do Asteroid_g e o remova da cena.
59. Para encerrar, salve a cena e feche os programas abertos.

21. CHARACTER CONTROLLER - 1


Aqui conhecemos o componente Character Controller e algumas de suas propriedades. Prati-
que o conteúdo estudado resolvendo as questões a seguir.

1. Qual a diferença entre o Characterer Controller e um Collider?

2. Por que o componente Character Controller não utiliza a propriedade Time.deltaTime?

Passo a passo:
1. Abra o Unity e crie um novo projeto 3D chamado Exemplo Character Controller
2. Crie um GameObject Cylinder através da barra de menus.
3. Na aba Inspector clique no botão Add Component e, dentro da opção Physics, selecione
o componente Character Controller.
4. Entre com o valor 2.5 no campo referente a posição do objeto no eixo Y.
5. Crie um novo GameObject 3D do tipo Plane e mantenha sua posição no centro do mundo
(X: 0, Y: 0 e Z: 0).
6. Na aba Project, dentro da pasta Assets, crie um script chamado Move Depois, abra o
script com um duplo clique.
7. Antes da declaração da classe Move, digite o seguinte código: [RequireComponent(type
of(CharacterController))]
8. Dentro da classe Move declare uma nova variável, digitando: public float speed = 3.0f;
9. Na linha seguinte digite: public float turnSpeed = 3.0f;
10. Crie um atributo privado, do tipo CharacterController, chamado controller, digitando:
private CharacterController controller;

34
11. No método Start utilize o método GetComponent para adquirir uma referência do com-
ponente. Digite: controller = GetComponent<CharacterController>();
12. No método Update digite o seguinte código: transform.Rotate(0, Input.
GetAxis(“Horizontal”) * turnSpeed, 0);
13. Na linha seguinte digite o código: Vector3 forward = transform.TransformDirection(Vector3.
forward);
14. Na próxima linha digite o código: float currentSpeed = speed * Input.GetAxis(“Vertical”);
15. Na linha debaixo digite: controller.SimpleMove(forward * currentSpeed);

16. Salve o script e volte ao Unity.


17. Renomeie o objeto Cylinder para Player
18. Remova seu componente Capsule Collider.
19. Atribua o script Move ao GameObject Player.
20. Na aba Hierarchy clique com o botão direito sobre o nome do GameObject Player, escolha
a opção 3D Object e crie um GameObject Sphere.
21. Altere a escala do GameObject Sphere para 0.5 em todos os eixos.
22. Nas propriedades de posição entre com o valor 0.5 nos eixos Y e Z.
23. Selecione o GameObject Main Camera e altere seus valores de posição para 4 em Y, -8
em Z e mantenha X em 0.
24. Altere também sua rotação no eixo X para o valor 25
25. Clique no botão Play e movimente o Player pelo cenário.
26. Após testar a movimentação, desative o botão Play.
27. Através da aba Hierarchy, clique e arraste o GameObject Main Camera para cima do
objeto Player.
28. Com a câmera selecionada, altere sua posição para os valores 2 e -2 nos eixos Y e Z,
respectivamente.
29. Clique com o botão direito no conteúdo vazio da aba Project e crie um material.
30. Nomeie o material como Ground e defina uma cor azul de sua preferência. Em Smoothness
defina o valor 0

35
31. Atribua o novo material ao GameObject Plane.
32. Com o GameObject Plane selecionado, altere o valor de sua escala para 3 nos eixos X e Z.
33. Clique no botão Play e movimente o objeto no cenário.
34. Desative o botão Play.
35. Através da barra de menus, crie um novo GameObject 3D do tipo Cube.
36. Clique com o botão direito e renomeie o novo GameObject para Degrau
37. Altere sua a escala no eixo Y para 0.2 e altere sua posição para 0 em X, 0.115 em Y e -2
em Z.
38. Através da aba Hierarchy, duplique duas vezes objeto Degrau.
39. Selecione Degrau (1) e altere sua posição para 0.32 em Y e -2.66 em Z.
40. Selecione o GameObject Degrau (2) e altere sua posição para 0.518 em Y e -3.215 em Z.
41. Acione o botão Play e suba a escada com o Player.
42. Desative o botão Play.
43. Salve a cena no diretório raiz com o nome Main
44. Feche os programas abertos.

22. CHARACTER CONTROLLER - 2


Continuamos estudando o Character Controller, onde conhecemos mais propriedades do com-
ponente. Abaixo encontram-se alguns exercícios para prática.

1. Nas lacunas abaixo marque V para verdadeiro ou F para falso de acordo com as afirmações:
( ) O componente Character Controller reage às forças por conta própria, portanto pode
empurrar ou receber interações dos cálculos físicos.
( ) Ao ativar as três opções da propriedade Freeze Rotation do componente Rigidbody, se
congela a rotação de um GameObject em todos os eixos.
( ) A propriedade Slope Limit determina o valor de inclinação que o Character Controller
consegue subir ou descer.
( ) O atributo Skin Width serve para delimitar a distância mínima para o GameObject se
mover.

Passo a passo:
1. Para começar abra o Unity e o projeto Exemplo Character Controller.
2. Através da aba de menus crie um novo GameObject 3D to tipo Cube.
3. Altere a posição do novo GameObject para -4 em X, 1 em Y e -3 em Z.
4. Clique no botão Add Component e adicione o componente Rigidbody.
5. Selecione o GameObejct Player e clique na seta ao lado de seu nome para expandi-lo.
6. Arraste o GameObject Main Camera para fora de Player (solte-o em um espaço vazio
dentro da aba Hierarchy).
7. Com a Main Camera selecionada, altere suas propriedades de posição para 4.25 em X,
3.75 em Y e 6 em Z.
8. Mude suas propriedades de rotação para 15 em X, -145 em Y e 0.4 em Z.
9. Ative o botão Play e teste a colisão entre o GameObject Player e o Cube.
10. Desative o botão Play e abra o script Move com um duplo clique.
11. Na linha abaixo do atributo controller digite: public float pushPower = 2.0f;
12. Abaixo do método Update declare um novo método void com a seguinte assinatura: void
OnControllerColliderHit(ControllerColliderHit hit){} Não se esqueça de teclar <Enter> en-
tre as chaves.

36
13. Dentro do novo método digite o seguinte código: Rigidbody body = hit.collider.attache-
dRigidbody;
14. Na próxima linha digite: if (body == null || body.isKinematic)
15. Na linha debaixo digite: return;
16. Tecle <Enter> duas vezes para pular um espaço.
17. Na linha em branco digite: if (hit.moveDirection.y < -0.3F)
18. Abaixo digite: return;
19. Na próxima linha digite o seguinte código: Vector3 pushDir = new Vector3(hit.
moveDirection.x, 0, hit.moveDirection.z);
20. Na linha seguinte digite o código: body.velocity = pushDir * pushPower;

21. Salve o script e maximize a janela do Unity.


22. Clique no botão Play e colida com o cubo. Repare que o cubo está sendo empurrado e
rotacionado.
23. Desative o botão Play e selecione o GameObject Cube.
24. Expanda as opções de Constraints do Rigidbody e ative as três opções da propriedade
Freeze Rotation.
25. Ative o botão Play e empurre o cubo novamente.
26. Observe que agora o cubo não se rotaciona mais ao ser empurrado. Desative o botão
Play.
27. Crie um GameObject 3D do tipo Plane através da barra de menus.
28. Clique com o botão direito sobre o novo objeto e o renomeie para Rampa
29. Posicione-o nas coordenadas -0,24 em X, 2.7 em Y e -8.3 em Z.
30. Entre com o valor 25 na rotação do eixo X.
31. Duplique o GameObject Rampa.
32. Selecione o novo clone e entre com o valor 50 em sua rotação. Altere sua posição para
5.4 em Y e -9.21 em Z.
33. Selecione o GameObject Main Camera e altere sua posição para as coordenadas 6.2 em
X, 2.96 em Y e -0.29 em Z.

37
34. Altere também as propriedades de rotação, inserindo os valores 13 em X, -118.07 em Y
e 0.38 em Z.
35. Acione o botão Play.
36. Tente subir com o Player até as rampas e observe o resultado. Não é possível subir na
segunda, que é mais inclinada. Desative o botão Play.
37. Selecione o GameObject Player e altere o valor de Slope Limit para 60
38. Clique em Play e suba com o Player nas rampas.
39. Desative o botão Play e altere o valor de Slope Limit para 20
40. Clique no botão Play e tente subir nas rampas.
41. Desative o Play e volte o valor de Slope Limit para 45
42. Salve a cena e feche os programas abertos.

23. TERRENOS - 1
Nesse capítulo aprendemos o que são terrenos e como podemos criar e editar sua superfície.
Desenvolva seu aprendizado resolvendo os exercícios a seguir.

1. O que o componente Terrain Collider permite?

2. O que é o atributo Enable Tree Collider?

Passo a passo:
1. Execute o Unity e abra o projeto Exemplo Character Controller.
2. Crie uma nova cena e salve-a na pasta Assets com o nome Terreno de Exemplo
3. Na barra de menus clique em GameObject, direcione o cursor sobre 3D Object e selecio-
ne Terrain.
4. Com o GameObject Terrain selecionado, clique no título da aba Scene e tecle <F>.
5. Selecione o primeiro botão do componente Terrain,
a propriedade Raise / Lower Terrain.
6. Selecione o terceiro brush da esquerda para a direita
na primeira linha.
7. Aplique zoom para aproximar a visualização do ter-
reno e modele montanhas em um dos cantos. Não
se importe com o tamanho das montanhas, apenas
faça algumas.
8. Selecione o último brush da primeira linha e altere o
valor de Brush Size para 50
9. Pincele novas montanhas em outro canto do terreno.
10. Selecione o penúltimo brush da primeira linha e alte-
re Opacity para 10
11. Pincele montanhas em um canto em branco.

38
12. Selecione o segundo botão do componente Terrain, a opção Paint Height.
13. Altere o valor da propriedade Height para 30
14. Pincele por cima das outras duas montanhas criadas anteriormente.
15. No componente Terrain selecione o terceiro botão, a opção Smooth Height.
16. Pincele novamente as montanhas criadas e observe a suavização.
17. Salve a cena e feche o Unity.

24. TERRENOS - 2
Damos sequência aos estudos referentes aos terrenos, aprendendo a como aplicar texturas e
criar árvores. Faça as atividades a seguir para complementar seu aprendizado.

1. O que as texturas pintadas aplicadas com transparência variável possibilitam?

2. Ao que se refere o quinto botão do componente Terrain e o que ele permite?

Passo a passo:
1. Abra o Unity e o projeto Exemplo Character Controller.
2. Na barra de menus clique em Assets, direcione o cursor sobre Import Package e selecione
Environment.
3. Dentro da janela de importação reduza todas as pastas do diretório raiz, mantenha ape-
nas a pasta Environment selecionada e clique em Import.
4. Na aba Project acesse a pasta SurfaceTextures, que está dentro do diretório Standard
Assets/ Environment/ TerrainAssets.
5. Através da aba Hierarchy selecione o GameObject Terrain.
6. Selecione o quarto botão do componente Terrain, referente a opção Paint Texture.
7. Clique na opção Edit Textures e selecione Add Texture.
8. Clique no primeiro campo para selecionar a textura e selecione GrassHillAlbedo com um
duplo clique.
9. Confirme a textura clicando em Add.
10. Clique novamente em Edit Textures e selecione a opção Add Texture. Faça o mesmo pro-
cesso para adicionar outra textura, mas desta vez selecione o arquivo GrassRockyAlbedo.
11. Em Textures selecione a segunda textura. Depois, selecione o quarto brush da primeira
linha.
12. Na aba Scene utilize o cursor do brush para pintar toda a montanha da esquerda.
13. Altere o valor da propriedade Target Strength para 1 e pinte as outras duas montanhas.
14. Clique em Edit Texture e selecione a opção Add Texture.
15. Clique no primeiro campo e atribua o arquivo MudRockyAlbedoSpecular. Para o campo
Normal atribua o arquivo MudRockyNormals. Adicione as novas texturas clicando em
Add.

39
16. Selecione a nova textura, altere o valor de Brush Size para 50 e o Target Strength para 0.5
17. Pinte a área plana central do mapa.
18. Na aba Project selecione a pasta Assets e abra a cena Main com um duplo clique.
19. Crie um prefab do GameObject Player dentro da pasta Assets.
20. Salve a cena e abra novamente a cena Terreno de Exemplo.
21. Instancie o prefab Player na cena e selecione a nova instância através da aba Hierarchy.
22. Modifique suas propriedades de posição para 200 em X, 1 em Y e 250 em Z.
23. Na aba Hierarchy clique e arraste o GameObject Main Camera até o nome do GameOb-
ject Player.
24. Com a Main Camera selecionada, entre com os valores de posição 0 em X, 2 em Y e -2 em
Z. Altere também a sua propriedade de rotação para 20 em X.
25. Selecione a aba Game e ative a opção Maximize On Play. Então, ative o botão Play.
26. Ande um pouco pelo mapa observando o cenário. Desative o botão Play.
27. Selecione o GameObject Player e altere o valor do atributo Speed para 40
28. Selecione o GameObject Terrain e clique no quinto botão do componente Terrain, refe-
rente a opção Place Trees.
29. Clique no botão Edit Trees e, em seguida, selecione a opção Add Tree.
30. Clique no círculo ao lado do input do prefab, selecione Broadleaf_Desktop e clique em
Add.
31. No campo Brush Size defina o valor 30 e em Tree Density entre com o valor 70
32. Modele as árvores em todo o canto que não possui montanhas, até fechar as bordas do
terreno.
33. Selecione o GameObject Player e altere sua posição no eixo X para 250

34. Ative o botão Play e ande pelas árvores. Depois, desative o Play.
35. Salve a cena e feche o Unity.

40
25. ÁGUA E ÁUDIO
Desenvolvemos mais o terreno, adicionando água e sons. Pratique o conteúdo apresentado re-
solvendo as atividades abaixo.

1. Analise as afirmativas:
( 1 ) Para causar o efeito de um rio, lago ou mar é necessário um conjunto de configurações
de materials, meshs, texturas e scripts.
( 2 ) Como qualquer recurso gráfico, quanto mais realista a água se torna, menos recursos
computacionais ela consome.
( 3 ) Para que o sistema de som funcione perfeitamente é necessário que exista apenas um
Audio Listener na cena.
( 4 ) O componente Audio Listener é um emissor de som, geralmente anexado ao GameOb-
ject Main Camera por padrão.

Estão corretas somente:


a) 1 e 3.
b) 1 e 4.
c) 2 e 3.
d) 2 e 4.

Passo a passo:
1. Inicie o Unity e abra o projeto Exemplo Character Controller.
2. Abra a pasta Prefabs, que está no caminho Assets/ Standard Assets/ Environment/ Wa-
ter/ Water4.
3. Crie uma instância do prefab Water4Simple na cena, arrastando-o para a aba Hierarchy.
4. Com o novo GameObject selecionado, altere suas coordenadas de posição para 250 em
X, 1 em Y e 250 em Z.
5. Altere sua escala no eixo X para 6 e no eixo Z para 4
6. Exclua o GameObject Player.
7. Na barra de menus clique em Assets, direcione o cursor sobre Import Package e selecione
Characters.
8. Desmarque as pastas RollerBall (que está dentro de Characters) e PhysicsMaterials. Cli-
que em Import.
9. Na aba Project abra a pasta Prefabs no caminho Assets/ Standard Assets/ Characters/
FirstPersonCharacter.
10. Instancie o prefab FPSController na cena.
11. Altere as coordenadas de posição do GameObject FPSController para 410 em X, 1 em Y
e 200 em Z.
12. Acesse a aba Game e desative a opção Maximize On Play. Depois, volte para a aba Scene.
13. Acione o botão Play e se movimente pelo cenário, observando os resultados.
14. Tecle <Esc> para exibir o cursor e desative o botão Play.
15. Na barra de menus clique em GameObject e selecione Create Empty para criar um Game-
Object vazio. Nomeio-o como WaterSound
16. Posicione o GameObject WaterSound nas coordenadas 420 em X, 45 em Y e 250 em Z.
17. Na aba Project acesse a pasta Assets e minimize a janela do Unity.
18. Importe o arquivo MP3 chamado Flowing-water para a pasta Assets, clicando e arrastan-
do o arquivo até a aba Project. Se precisar de ajuda para encontrar o arquivo, peça ao seu
instrutor.

41
19. Com o GameObject WaterSound selecionado, através da aba Inspector, adicione o com-
ponente Audio Source.
20. Clique e arraste o arquivo de áudio até o atributo AudioClip do componente Audio Source.
21. Ative o botão Play e perceba o som da água.
22. Desative o botão Play e salve a cena.
23. Para finalizar, feche o Unity.

26. COMPONENTE AUDIO SOURCE


Foi ensinado a como utilizar o componente Audio Source, adicionando som para a água do ce-
nário. Para praticar seu aprendizado, faça as atividades a seguir.

1. Qual a função da propriedade Spatial Blend?

42
2. Para que servem as propriedades de som Min Distance e Max Distance?

Passo a passo:
1. Execute o Unity e abra o projeto Exemplo Character Controller.
2. Selecione o GameObject WaterSound.
3. Na barra de opções da aba Scene ative o botão com um ícone de áudio.
4. Na aba Inspector ative a opção Loop.
5. Altere o valor de Spatial Blend para 1
6. Expanda as opções de 3D Sound Settings e entre com o valor 180 na opção Spread.
7. Exiba as opções de Volume Rolloff e selecione o modo linear.
8. No campo Max Distance entre com o valor 75
9. Altere o valor da propriedade Min Distance para 25
10. Ative o botão Play e ande pelo cenário reparando na intensidade do som.
11. Pressione a tecla <Esc> para visualizar o cursor do mouse e desative o botão Play.
12. Na aba Scene desative o botão de áudio.
13. Em Inspector, ao lado da caixa de verificação de seu status, clique no ícone com formato
de um cubo e selecione a segunda opção, referente a cor azul.
14. Duplique o GameObject WaterSound e o nomeie como WaterSoundCalm
15. Altere as coordenadas de WaterSoundCalm para 315 em X, 10 em Y e 275 em Z.
16. No componente Audio Source altere o valor da propriedade Pitch para 0.45
17. Duplique o GameObject WaterSoundCalm e atribua o nome WaterSoundCalm apagando
o (1).
18. Altere a posição do novo GameObject para 250 em X e 400 em Z.
19. Altere o valor da propriedade Pitch para 0.33 no componente Audio Source.
20. Modifique o valor de Priority para 190
21. Duplique mais uma vez o GameObject WaterSoundCalm e o nomeie como WaterSound-
Calm
22. Altere a posição do novo GameObject para 200 em X e 200 em Z.
23. Altere o valor de Priority para 200
24. Defina o valor 75 em Min Distance e 150 em Max Distance.
25. Ative o botão Play e ande pelo cenário para perceber os sons emitidos.
26. Tecle <Esc> e desative o botão Play.
27. Salve a cena e feche o programa.

27. SPRITES E SPRITESHEETS


Durante esse capítulo aprendemos mais sobre perspectivas e a como configurar os sprites para
um jogo. Continue os estudos resolvendo as atividades abaixo.

43
1. Como funciona a perspectiva Mode7?

2. Como é o posicionamento da câmera em uma perspectiva Isométrica?

Passo a passo:
1. Primeiramente abra o Unity.
2. Crie um novo projeto do tipo 2D chamado Exemplo Projeto 2D.
3. Importe as pastas BeanGame e Sprites para a pasta Assets na aba Project. Se precisar de
ajuda para encontrá-las, peça ao seu instrutor.
4. Na aba Project abra a pasta Sprites.
5. Selecione o arquivo de sprite char_hero_beanMan e clique em sua seta.
6. Na aba Inspector clique no campo Sprite Mode e selecione Multiple.
7. Clique no botão Sprite Editor e confirme as modificações clicando em Apply.

8. Clique em Slice e exiba as opções de Type. Então, selecione Grid By Cell Size.
9. Clique no botão Slice e confirme as alterações clicando em Apply. Depois, feche a janela
Sprite Editor.
10. Insira um dos sprites dentro da aba Scene.

44
11. Clique no título da aba Scene e tecle <F> para focar o sprite na cena.
12. Exclua o GameObject recém adicionado e selecione novamente o arquivo char_hero_be-
anMan.
13. Clique em Sprite Editor, exiba as opções de Slice e altere o tipo de corte para Grid By Cell
Count.
14. Entre com o valor 3 em C e 3 em R. Confirme clicando em Slice.
15. Clique em Revert no canto superior direito da janela.
16. Clique em Slice novamente e selecione o modo de corte Automatic. Confirme clicando
em Slice.
17. Selecione a fatia da arma e arraste seu pivô (círculo azul) até o gatilho.
18. No campo Name digite Bazooka
19. Clique em Apply e feche a janela do Sprite Editor.
20. Clique no sprite Bazooka e arraste-o para a cena.
21. Pressione a tecla <F> para focar a visualização no sprite.
22. Salve a cena na pasta Assets com o nome Exemplo Sprites
23. Feche o Unity.

28. SPRITE RENDERER E LAYERS


Aprendemos a como utilizar o componente Sprite Renderer. Resolva os exercícios a seguir para
desenvolver seu entendimento sobre o assunto.

1. Nas lacunas abaixo marque V para verdadeiro ou F para falso de acordo com as afirmações:
( ) No atributo Flip encontram-se três caixas de verificação, uma para inverter o sprite no
eixo X, outra no eixo Y e outra no eixo Z.
( ) A opção Pixels Per Unit define quantos pixels do sprite são necessários para completar
uma unidade de escala da cena.
( ) Os números de Order in Layer representam sua ordem de desenho apenas dentro da
Layer.
( ) A sobreposição hierárquica de Layers se dá de baixo para cima, onde as que ficam mais
acima são as camadas mais próximas da tela.

Passo a passo:
1. Abra o Unity e o projeto Exemplo Projeto 2D.
2. Na aba Project abra a pasta Sprites.
3. Selecione o GameObject Bazooka e ative a opção X na propriedade Flip.
4. Exclua o GameObject Bazooka, selecionando-o e teclando <Delete>.
5. Minimize a janela do Unity e importe a pasta EnvironmentSprites para dentro da pasta
Sprites na aba Project.
6. Abra a pasta EnvironmentSprites.
7. Crie uma instância de cada sprite na cena, arrastando os arquivos um a um para a aba
Hierarchy.
8. Selecione o GameObject env_Bank, exiba as opções da propriedade Sorting Layer e sele-
cione Add Sorting Layer.
9. Crie em sequência, utilizando o botão de adição, algumas Sorting Layers com os nomes:
Background, Character, Foreground e UI.
10. Selecione novamente o GameObject env_Bank e, no campo Sorting Layer, atribua a Layer
Background.

45
11. Selecione o GameObject env_bg e atribua a Layer Background a ele também.
12. Altere o valor da propriedade Order in Layer para -2
13. Pressionando a tecla <Ctrl>, selecione os GameObjects env_Clouds, env_cloudTop e env_
Fog. Atribua a Layer Background para eles.
14. Selecione os GameObjects env_BigBen e env_Gherkin. Atribua a Layer Background a eles
e altere o valor de Order In Layer para -1
15. Selecione o GameObject env_Bank e altere seu valor de Order in Layer para 1
16. Pressionando <Ctrl>, selecione os GameObjects env_RiverBase, env_RiverMid e env_Ri-
verTop. Então, altere a Layer para Background e defina o valor de Order In Layer para 2
17. Ainda com os três GameObjects selecionados, entre com o valor -4.3 no eixo Y de sua
posição no componente Transform.
18. Selecione apenas o GameObject env_RiverMid e altere seu valor de Order In Layer para 3
19. Selecione o GameObject env_RiverTop e altere seu valor de Order In Layer para 4
20. Selecione o GameObject env_TowerFull e atribua a Layer Foreground a ele.
21. Em suas propriedades de posição entre com as coordenadas -7.2 em X e -1.46 em Y.
22. Crie um GameObject vazio através da barra de menus e mantenha sua posição em 0 no
eixo X e 0 no eixo Y. O nomeie como Background
23. Com a tecla <Ctrl> pressionada, selecione os GameObjects env_Bank, env_bg, env_Big-
Ben, env_Clouds, env_cloudTop, env_Fog, env_Gherkin, env_RiverBase, env_RiverMid
e env_RiverTop. Arraste-os para cima do novo GameObject.
24. Reduza o GameObject Background clicando em sua seta.
25. Selecione o GameObject env_TowerFull e altere seu valor de Order in Layer para 2
26. Selecione o objeto env_PlatformBridge, altere sua Layer para Foreground e mude suas
propriedades de posição para as coordenadas -2.26 em X e -5.34 em Y.
27. Duplique o GameObject env_PlatformBridge.
28. Selecione o novo clone e ative o Flip no eixo X. Depois, altere sua posição em X para 7.88

46
29. Selecione o GameObject env_PlatformUfo e altere sua Layer para Foreground. Em suas
propriedades de posição defina os valores 9.13 em X e -2.73 em Y.
30. Selecione o objeto env_UfoLegs, altere sua Layer para Foreground e entre com as coor-
denadas de posição 9.43 em X e -1.5 em Y.
31. Arraste esse objeto para cima do GameObject env_PlatformUfo. Em seguida, reduza o
env_PlatformUfo.
32. Selecione o GameObject env_PlatformTop, defina a Layer Foreground e altere suas pro-
priedades de posição para -4.08 em X e -1.47 em Y.
33. Através da barra de menus crie outro GameObject vazio e mantenha suas propriedades
de posição em 0. O renomeie para Foreground
34. Selecione todos os GameObjects da cena, exceto os objetos Main Camera, Background
e Foreground. Arraste os objetos selecionados para cima do GameObject Foreground.
35. Reduza o GameObject Foreground e selecione o GameObject Main Camera.
36. Altere o valor de Size para 6 e a posição no eixo Y para -0.9
37. Acesse a aba Game e observe como ficou o cenário 2D.
38. Salve a cena e feche o programa.

29. ANIMAÇÕES 2D - 1
Iniciamos os estudos sobre animações 2D, conhecendo os componentes Animation e Animator.
Exercite seu aprendizado resolvendo as questões a seguir.

1. O que a opção Loop Time permite quando ativada? E quando desativada?

2. Com a opção Culling Type o que acontece quando a animação é baseada em Renderers?

Passo a passo:
1. Execute o Unity e abra o projeto Exemplo Projeto 2D.
2. Na aba Project abra a pasta Sprites.
3. Selecione o arquivo part_explosion, exiba as opções do campo Sprite Mode e selecione
Multiple.
4. Clique em Sprite Editor e confirme clicando em Apply.
5. Exiba as opções de Slice e, com a opção Automatic selecionada, clique no botão Slice.
6. Clique em Apply e feche a janela do Sprite Editor.
7. Clique na seta do arquivo part_explosion para expandir seus sprites.
8. Com a tecla <Shift> pressionada, selecione todos os sprites de part_explosion. Arraste a
seleção para a aba Hierarchy.
9. Dentro da janela de salvamento volte para a pasta Assets e clique em Nova pasta.
10. Nomeie a pasta como Animations e dentro dela salve a animação com o nome boom
11. Clique com o botão direito sobre o GameObject que foi criado na cena e o renomeie para
explosao

47
12. Na aba Project abra a pasta Animations.
13. Com o GameObject explosao selecionado, atribua o arquivo part_explosion_0 da pasta
Animations à propriedade Controller do componente Animator.
14. No componente Sprite Renderer altere a Layer para Foreground e entre com o valor 10
em Order In Layer.
15. Na barra de menus clique em Window e selecione Animation. Arraste a nova janela para
o lado da aba Console.
16. Exiba o menu Window novamente e clique em Animator. Arraste a nova aba para o lado
da aba Animation.
17. Com o GameObject explosao selecionado, clique no título da aba Animation.
18. Clique no botão Play da aba Animation.
19. Observe a animação sendo executada na aba Scene. Desative o botão Play e o botão Gra-
var, que é representado por um círculo vermelho.
20. Clique no campo com o nome da animação atual e selecione a opção Create New Clip.
21. Nomeie a nova animação como inverse_boom e clique em Salvar.

22. Altere a posição da aba Project para o lado da aba Inspector.


23. Selecione o último sprite da explosão e arraste-o para o quadro 0:00 na aba Animation.
24. Para o penúltimo sprite faça o mesmo, mas arraste-o para 0:05.
25. Faça o mesmo com os outros dois sprites, progressivamente.
26. Teste a animação clicando no botão Play.
27. Desative a opção Gravar.
28. Desative o GameObject explosao através da aba Inspector.
29. Acesse a aba Project e reduza os sprites do arquivo de imagem na pasta Sprites. Selecione
o arquivo char_hero_beanMan.
30. Ative a aba Inspector e clique em Sprite Editor.
31. Selecione o sprite do corpo do personagem, o renomeie para Body e altere a posição de
seu pivô para Bottom.
32. Selecione o sprite que está à esquerda do Body e renomeie para HandR
33. Altere seu pivô para Custom e, nos valores de posição do pivô, insira as coordenadas 0.61
em X e 0.72 em Y.
34. Selecione o sprite que está à direita de Body, renomeie para HandL, defina seu pivô para
Custom e altere sua posição para 0.56 em X e 0.66 em Y.

48
35. Renomeie o sprite do pé maior para FootR, o do pé menor para FootL, o do círculo maior
para EyeR, o do círculo menor para EyeL e o de chapéu para Hat
36. Selecione o bigode e o renomeie para Mustache Altere seu pivô para Custom e insira os
valores 0.6 em X e 0.65 em Y.
37. Clique em Apply no canto superior direito da janela e depois feche-a.
38. Acesse a aba Project novamente. Através da barra de menus crie um GameObject vazio.
39. Renomeie o novo GameObject para Player
40. Crie uma instância de cada sprite do arquivo char_hero_beanMan, um a um, dentro do
GameObject Player.
41. Salve a cena e feche o Unity.

30. ANIMAÇÕES 2D - 2
Nesse capítulo aprendemos mais sobre as animações 2D e o uso dos componentes Animation e
Animator. Resolva as atividades a seguir para praticar o conteúdo estudado.

1. Como é possível diminuir a velocidade de uma animação?

2. O que é possível fazer através dos balões que representam estados do controller?

Passo a passo:
1. Abra o Unity e o projeto Exemplo Projeto 2D.
2. Selecione todos os GameObjects filhos de Player e atribua a Layer Character a eles.
3. Com os objetos selecionados, altere suas propriedades de escala para 0.5 em X e 0.5 em
Y.
4. Nas ferramentas de edição de GameObjects troque o valor da opção de âncora de Center
para Pivot.
5. Selecione os GameObjects EyeL, EyeR e Mustache. Altere o valor de Order In Layer para 1
6. Mantenha apenas o GameObject EyeL selecionado. Altere suas coordenadas de posição
para 0.16 em X e 1.25 em Y.
7. Selecione o objeto EyeR e altere sua posição para -0.09 em X e 1.23 em Y.
8. Clique sobre o GameObject Mustache e altere sua posição para 0.1 em X e 0.97 em Y.
9. Selecione o GameObject Bazooka e defina sua posição em 0.44 no eixo X e 0.89 no eixo
Y. Altere também o valor de Order in Layer para -2
10. Selecione o GameObject HandL e altere sua posição para 0.445 em X e 0.89 em Y. Mude
o valor de Order in Layer para -1
11. Clique sobre o objeto HandR e altere suas coordenadas de posição para -0.45 em X e 0.73
em Y. Mude seu valor de Order in Layer para 1
12. Selecione o GameObject Hat e defina sua posição em -0.28 em X e 1.53 em Y. Altere o
valor de Order in Layer para 1
13. Selecione FootL e defina 0.39 em X e 0.05 em Y em seus campos de posição. Em Order in
Layer defina o valor 1

49
14. Clique em FootR e altere sua posição para -0.22 em X e -0.04 em Y. Modifique o valor de
Order in Layer para 1
15. Acesse a aba Project e abra a pasta Animations. Clique com o botão direito em seu con-
teúdo, direcione o cursor sobre Create e selecione Animator Controller.
16. Nomeie o arquivo como MrBean e arraste-o até o GameObject Player.
17. Selecione o GameObject Player e acesse a aba Inspector.
18. Na a aba Animation crie um novo clip chamado Walk
19. Mova a linha de marcação de tempo para 0:03 e selecione o GameObject FootR.
20. Altere a posição de FootR para 0.39 em X e 0.003 em Y. Mude também sua rotação em Z
para 50
21. Selecione o GameObject FootL e altere sua posição para -0.18 em X e -0.04 em Y. Altere
também sua rotação no eixo Z para -54
22. Ative o botão Play da aba Animation. Visualize a animação e depois desative o Play.
23. Altere o valor de Samples para 12
24. Clique no segundo losango da primeira linha para selecionar todas as alterações que ocor-
rem neste tempo.
25. Arraste o conjunto para o tempo 0:04. Ative o botão Play, visualize as alterações e desa-
tive-o.
26. Selecione o conjunto de interações do primeiro losango e arraste-o até o tempo 0:02.
27. Posicione o marcador de tempo em 0:00.
28. Clique no ícone de losango com um sinal de adição para criar um novo Keyframe na sele-
ção. Arraste o novo Keyframe para o tempo 0:08.
29. Volte o primeiro losango da formação atual para o tempo 0:00.

30. Ative o botão Play e, após observar as alterações, desative-o.


31. Crie um novo clip chamado Shot.
32. Selecione os GameObjects Bazooka e HandL. Altere a posição do marcador de tempo
para 0:10.
33. Defina o valor 0.38 no eixo X da posição.
34. Arraste o primeiro losango até 0:05.
35. Posicione o marcador de tempo em 0:00 e clique em Add Keyframe. Arraste o novo con-
junto para 0:20.

50
36. Arraste o primeiro conjunto de losangos para 0:00.
37. Ative o botão Play e repare no efeito da animação. Desative o botão Play.
38. Desative o botão Gravar da aba Animation. Depois, acesse a aba Animator.
39. Exclua o GameObject explosao da cena e selecione o objeto Player. Altere sua escala em
X e Y para 2
40. Clique no botão Play do Unity e, após visualizar as animações, desative-o.
41. Na aba Animator clique com o botão direito sobre o balão Shot e selecione a opção Set
as Layer Default State.
42. Ative novamente o botão Play do Unity e visualize a animação. Desative o botão Play.
43. Volte o balão Walk como padrão, clicando com o botão direito e selecionando Set as
Layer Default State.
44. Clique com o botão direito no balão Walk e selecione a opção Make Transition. Então,
clique no balão Shot para criar a transição.
45. Para terminar, salve a cena e feche o Unity.

31. COMPONENTE ANIMATOR - 1


Continuamos com os estudos de animações 2D, iniciando o conteúdo referente ao componente
Animator. Para desenvolver seu aprendizado, faça os exercícios a seguir.

1. Analise as afirmações abaixo:


( 1 ) Quando a animação não possui mais um tempo de término, a transição possui mais pa-
râmetros para a troca de animação, não deixando ela em um loop.
( 2 ) O campo Conditions traz uma lista de condições para a animação entrar, se manter ou
sair da execução.
( 3 ) As Layers são utilizadas para executar mais de uma animação em um único Animator.
( 4 ) Quando a opção Has Exit Time está ativada a animação fica mais lenta.

Estão corretas somente:


a) 1 e 2.
b) 1 e 4.
c) 2 e 3.
d) 3 e 4.

Passo a passo:
1. Inicie o Unity e abra o projeto Exemplo Projeto 2D.
2. Através da aba Hierarchy selecione o GameObject Player e, depois, acesse a aba Animator.
3. Selecione a seta que representa a conexão entre as duas animações.
4. Na aba Inspector desative a opção Has Exit Time e clique em Play.
5. Após observar a animação desative o botão Play.
6. Na aba Animator clique em Parameters.
7. Clique no botão de adição para adicionar um parâmetro e selecione um do tipo Trigger.
Nomeie-o como Atire
8. Crie um outro parâmetro do tipo Bool e nomeie-o como AtireBool
9. Selecione novamente a transição das duas animações.
10. Clique no botão de adição do campo Conditions na aba Inspector.
11. Clique na seta do campo da condição adicionada para exibir suas opções e selecione o
parâmetro Atire do tipo Trigger.

51
12. Ative o botão Play novamente.
13. Na aba Animator clique no botão do parâmetro Atire e observe que a animação fez a
transição instantaneamente.
14. Desative o botão Play.
15. Selecione novamente a linha de transição das animações.
16. Adicione mais uma condição e altere seu parâmetro para AtireBool. Mantenha o valor
true selecionado.

17. Ative novamente o botão Play.


18. Na aba Animator ative o botão do parâmetro Atire. Depois, ative a caixa de verificação
AtireBool.
19. Desative o botão Play.
20. Clique com o botão direito sobre o balão da animação Shot e escolha a opção Make Tran-
sition.
21. Clique sobre o balão da animação Walk para criar uma nova transição.
22. Selecione a nova transição e adicione uma condição.
23. Na nova condição selecione o parâmetro AtireBool e troque o valor para false.
24. Clique em Play novamente. Ative o parâmetro AtireBool e, em seguida, o gatilho Atire.
25. Desative AtireBool.
26. Desative o botão Play.
27. Clique com o botão direito dentro do espaço dos balões do Animator, direcione o cursor
sobre a opção Create State e selecione Empty.
28. Clique com o botão direito sobre o balão da animação Shot e crie uma transição entre ele
e o novo balão criado.
29. Selecione o balão Shot e na aba Animator ative a opção Layers.
30. Clique no botão de adição para criar uma nova Layer. A renomeie para LayerTest
31. Com a nova Layer selecionada, clique com o botão direito na área dos balões, direcione o
cursor sobre Create State e selecione Empty.
32. Através da aba Inspector nomeie o novo balão como NewShot
33. Ainda na aba Inspector clique no círculo do campo Motion, desça a barra de rolagem e
selecione a animação Shot com um duplo clique.
34. Clique na engrenagem de LayerTest e altere o valor de Weight para 1

52
35. Ative o botão Play e repare nas duas Layers executando animações.
36. Desative o botão Play, salve a cena e feche o Unity.

32. COMPONENTE ANIMATOR - 2


Damos continuidade no aprendizado sobre os recursos do componente Animator. Aprimore seu
conhecimento resolvendo os exercícios sobre o assunto.

1. Basicamente, o que arquivo Animator Override Controller faz?

2. O que é possível fazer através da lista do campo Controller de Animator Override Controller?

Passo a passo:
1. Execute o Unity e abra o projeto Exemplo Projeto 2D.
2. Acesse a aba Game e certifique que a opção Maximize On Play esteja desativada.
3. Através da aba Hierarchy selecione o GameObject Player e altere sua escala nos eixos X e
Y para 1 Certifique-se que a escala de seus filhos seja 0.5 nos eixos X e Y.
4. Acesse a aba Project e selecione a pasta Sprites.
5. Minimize a janela do programa e importe o arquivo zombie para a pasta Sprites.
6. Selecione o novo arquivo e acesse a aba Inspector.
7. Altere o valor de Pixels Per Unit para 20
8. Selecione o valor Multiple em Sprite Mode e, depois, clique no botão Sprite Editor. Cli-
que em Apply para confirmar as alterações.
9. Clique na opção Slice, mantenha as configurações padrões e clique no botão Slice.
10. Clique em Apply e feche o Sprite Editor.
11. Na aba Hierarchy selecione e desative o GameObject Player.
12. Acesse a aba Project e clique na seta do arquivo zombie para abrir seus sprites.
13. Clique no primeiro sprite e, com a tecla <Shift> pressionada, clique no quarto sprite.
14. Arraste o conjunto de sprites até a aba Hierarchy.
15. Na janela de salvamento abra a pasta Assets e, depois, abra Animations. Nomeie como
Zombie1 e salve o arquivo.
16. Em Hierarchy exclua o GameObject zombie_0.
17. Selecione do quinto ao último sprite e arraste para Hierarchy.
18. Na janela de salvamento vá para a pasta Assets e, em seguida, Animations. Salve o arqui-
vo com o nome Zombie2
19. Reduza os sprites do arquivo zombie e selecione a pasta Animations.
20. Exclua o controller zombie_4 e renomeie o controller zombie_0 para zombiesController
21. Dentro da pasta Animations clique com o botão direito, direcione o cursor sobre Create e
selecione Animator Override Controller.
22. Renomeie o novo arquivo para zombiesOverride
23. Com o arquivo zombiesOverride selecionado, acesse a aba Inspector.
24. Clique no ícone do input Controller para procurar pelo arquivo e selecione zombiesCon-
troller.

53
25. Clique no ícone de busca do único item da lista e selecione a animação Zombie2.
26. Exclua o GameObject zombie_4, crie um GameObject vazio através da barra de menus e
o renomeie para Zombie1
27. Posicione o novo objeto no centro do mundo, definindo o valor 0 de posição nos eixos X,
Y e Z.
28. Adicione os componentes Sprite Renderer e Animator ao GameObject Zombie1.
29. Na opção Sorting Layer selecione o valor Character.
30. Clique no input Controller e selecione arquivo zombiesController.
31. Duplique o GameObject Zombie1 e renomeie a cópia para Zombie2
32. Altere o valor de sua posição em X para 3
33. No componente Animator clique no input Controller e selecione o arquivo zombiesOver-
ride.
34. Ative o botão Play e observe as animações em execução. Depois, desative o Play.
35. Desative os GameObjects Zombie1 e Zombie2.
36. Remova o GameObject Player.
37. Acesse a aba Project e crie uma pasta chamada Prefabs dentro de Assets.
38. Minimize a janela do programa e importe o arquivo prefab Player1.1 para a pasta Prefabs.
39. Instancie o novo prefab na cena e defina Character para o campo Sorting Layer em todos
os seus GameObjects filhos.
40. Clique na aba Animator e pressione o botão Play.
41. Ative a opção Parameters e altere o valor de Speed para 1
42. Depois de observar as alterações, volte o valor de Speed para 0
43. Clique mais de uma vez no gatilho Jump para visualizar a animação.
44. Em Animator selecione a opção Layers e selecione shooting.
45. Procure pela animação Shoot e ative novamente a opção Parameters.
46. Clique em Shoot e visualiza as transições da animação.
47. Volte para a primeira Layer e torne a selecionar a opção Parameters.
48. Ative o trigger Die e, após visualizar a animação, desative o botão Play.

49. Para finalizar, salve a cena e feche o Unity.

54
33. ANIMAÇÕES 3D
Foi iniciado o aprendizado sobre animações 3D, estudando Bones e suas utilizações. Resolva os
exercícios para colocar em prática seu aprendizado.

1. Como os Bones são vinculados ao Avatar?

2. O que a opção Animation Type, da aba Rig, permite?

Passo a passo:
1. Abra o Unity e crie um novo projeto 3D chamado Exemplo Animação 3D.
2. Acesse a aba Project e arraste-a para o conjunto das abas Console, Animation e Anima-
tor.
3. Minimize o Unity e importe a pasta FreeCharacter para a aba Project. Se precisar de ajuda
para encontrá-la, peça ao seu instrutor.
4. Abra a pasta FreeCharacter.
5. Selecione o arquivo FreeCharacter_01.fbx e, na aba Inspector clique em Rig.
6. Exiba as opções de Animation Type e selecione Humanoid.
7. Clique no botão Configure e confirme clicando em Apply.
8. Mova e/ou rotacione a visualização da aba Scene para uma perspectiva que possa visua-
lizar melhor o modelo.
9. Clique no botão Done no fim da aba Inspector.
10. Com o prefab FreeCharacter_01 selecionado, volte o tipo de animação para Generic e
clique em Apply.
11. Instancie o prefab FreeCharacter_01 para a aba Hierarchy.
12. Renomeie o novo GameObject para SciFi_Player
13. Acesse a aba Animation e clique no botão Create para criar uma nova animação.
14. Salve a animação dentro da pasta FreeCharacter com o nome bye
15. Expanda o GameObject SciFi_Player.
16. Depois, expanda os GameObjects filhos Bip001, Bip001 Pelvis, Bip001 Spine, Bip001 Spi-
ne1, Bip001 Spine2, Bip001 Neck, Bip001 R Clavicle, Bip001 R UpperArm, Bip001 R Fo-
rearm e Bip001 R Hand.
17. Ative o botão Gravar da aba Animation.
18. Selecione o GameObject Bip001 R UpperArm e altere sua rotação para 80 em X, 0 em Y
e 4 em Z.
19. Selecione o GameObject Bip001 R Forearm, entre com o valor 52 em Z para sua rotação
e mantenha X e Y com o valor 0.
20. Arraste a barra vermelha de tempo até o valor 0:10.
21. Com o GameObject selecionado, entre com o valor 120 em Z na rotação.
22. Selecione o losango das primeiras interações e arraste a seleção até o tempo 0:05.

55
23. Dê um clique duplo no espaço antes do tempo 0:05 da linha do tempo.
24. Arraste o novo conjunto de losangos para o tempo 0:00.
25. Altere o valor do campo Samples para 10
26. Clique no botão Play da aba Animation.
27. Desative o botão Play e o botão Gravar.
28. Feche o Unity sem salvar a cena.

34. MECANIM - 1
Nesse capítulo continuamos o conteúdo de animação 3D, aprendendo a importar animações
prontas e como utilizá-las dentro do programa. A seguir encontram-se alguns exercícios para comple-
mentar seu estudo.

1. Relacione as opções abaixo com suas respectivas descrições:


( 1 ) Start e End
( 2 ) Mask
( 3 ) Align With View
( 4 ) Transition Duration

( ) Serve para mesclar duas animações.


( ) Possibilita cortar a animação, tanto o início quanto o final.
( ) Define o tempo que a transição levará para trocar de animação.
( ) Serve para alinhar a câmera de acordo com a visualização da aba Scene.

Passo a passo:
1. Para iniciar, abra o Unity e o projeto Exemplo Animação 3D.
2. Acesse a aba Project e exclua a pasta FreeCharacter.
3. Minimize o Unity e importe a pasta SciFiCharacter para a aba Project. Se precisar de aju-
da, peça ao seu instrutor.
4. Abra a pasta SciFiCharacter e instancie o arquivo FreeCharacter_01 na aba Hierarchy.
5. Renomeie o novo GameObject para Player.
6. Clique com o botão direito no conteúdo da aba Project e crie um Animator Controller
com o nome SciFiCharacter
7. Atribua o Animator Controller ao Player.
8. Arraste a aba Project para o lado da aba Inspector e mantenha as abas Project e Animator
ativas.
9. Selecione o primeiro arquivo de animação e, com a tecla <Shift> pressionada, selecione
o último.
10. Com o GameObject Player selecionado, arraste os arquivos de animação para dentro da
aba Animator.
11. Separe os balões no espaço disponível para melhor visualizá-los.
12. Clique com o botão direito na animação zombie_stand_up e selecione a opção Set as
Layer Default State.
13. Acesse a aba Inspector e selecione o GameObject Main Camera.
14. Na barra de menus clique em GameObject e selecione a opção Align With View.
15. Clique na aba Game para acessá-la e certifique-se de que a opção Maximize On Play es-
teja desativada.
16. Selecione o GameObject Player e ative o botão Play.

56
17. Observe a animação sendo executada e desative o botão Play.
18. Clique com o botão direito do mouse na animação zombie_stand_up e crie uma transição
para a animação idle.
19. Ative o botão Play e, após ver o resultado, desative-o.
20. Selecione a transição criada anteriormente e exiba as opções de Settings. Então, altere o
valor de Transition Duration para 0.8
21. Na aba Animator crie um parâmetro do tipo Trigger chamado Punch
22. Clique com o botão direito na animação idle, crie uma transição para jab_cross e selecio-
ne essa transição.
23. Em Conditions adicione o parâmetro Punch.
24. Clique com o botão direito e crie uma transição de jab_cross para idle.
25. Acione o botão Play e, quando a animação idle estiver executando, ative o Trigger Punch.
26. Desative o botão Play.
27. Selecione a transição idle para jab_cross e desmarque a opção Has Exit Time.
28. Crie um novo parâmetro do tipo Bool chamado Dying
29. Clique com o botão direito na animação jab_cross e crie uma transição para zombie_
dying.
30. Selecione a nova transição e adicione o parâmetro booleano no conjunto de condições,
mantendo o valor true.
31. Clique com o botão direito na animação zombie_dying e crie uma transição para zom-
bie_stand_up.
32. Selecione a nova transição, adicione o parâmetro Dying no conjunto de condições e altere
o valor para false.
33. Selecione a transição jab_cross para idle e insira o parâmetro booleano no conjunto de
condições, também com o valor false.

34. Ative o botão Play e, quando a animação idle estiver sendo executada, ative o valor de
Dying.
35. Ative o trigger Punch e, depois, desmarque o parâmetro Dying para ver o personagem
despertar.
36. Desative o botão Play.
37. Salve a cena com o nome mecanim na pasta Assets.
38. Para finalizar, feche o Unity.

57
35. MECANIM - 2
Continuamos com os estudos sobre o Mecanim, aprimorando o uso de animações 3D. Desenvol-
va seu entendimento sobre o assunto resolvendo os exercícios a seguir.

1. Qual a diferença entre os tipos de blend 1D e 2D?

2. Como é possível desativar as regiões afetadas pelas animações que utilizam um avatar mask?

Passo a passo:
1. Abra o Unity e o projeto Exemplo Animação 3D.
2. Acesse a aba Project e abra a pasta SciFiCharacter.
3. Clique com o botão direito do mouse dentro da pasta e crie um arquivo Avatar Mask
chamado SciFiCharacter
4. Remova todas as animações da aba Animator.
5. Clique com o botão direito dentro da área dos estados da aba Animator, direcione o cur-
sor sobre a opção Create State e selecione From New Blend Tree.
6. Selecione o estado que acabamos de criar e acesse a aba Inspector. Renomeie o estado
para Idle_Run
7. Exclua todos os parâmetros, clicando com o botão direito e selecionando Delete.
8. Crie um parâmetro do tipo Float chamado vSpeed
9. Selecione o balão do Blend Tree, exiba as opções de Blend Type e selecione a opção 1D.
10. Atribua o parâmetro vSpeed ao campo Parameter.
11. Clique no ícone de adição do campo Motion e, depois, escolha a opção Add Motion Field.
Clique no input Motion e selecione a animação idle.
12. Adicione mais uma animação através da opção Add Motion Field. Clique no input Motion
vazio e selecione a animação running_inPlace.
13. Aumente a área de preview do Blend Tree, clique no botão Play do preview e observe a
animação idle ser executada.
14. Arraste o indicador do vSpeed do Blend Tree para a direita e observe o aumento de velo-
cidade.
15. Volte o indicador do vSpeed para a esquerda e desative o botão Play do preview.
16. Mova a aba Project para o conjunto de abas Console, Animation e Animator.
17. Na aba Project selecione o arquivo da animação jab_cross.
18. Selecione a sessão Animations na aba Inspector e ative a opção Loop Time. Clique em
Apply para confirmar.
19. Faça o mesmo passo anterior com a animação running_inPlace.
20. Selecione o arquivo Avatar Mask e expanda a sessão Transform.
21. Clique no campo Use skeleton from e selecione o arquivo FreeCharacter_01Avatar.
22. Clique em Import Skeleton para importar todas as referências dos Bones.
23. Desative todos os Bones, desmarcando somente Bip001 e Body_01.
24. Expanda os Bones Bip001, Bip001 Pelvis e Bip001 Spine.

58
25. Expanda e ative o Bone Bip001 Spine1.
26. Na a aba Animator acesse Layers e clique no ícone de adição para adicionar uma nova.
27. Nomeie a nova Layer como UpperBody
28. Selecione a nova Layer, clique com o botão direito em seu conteúdo e crie um estado
vazio.
29. Selecione o novo estado e, no campo Motion da aba Inspector, selecione a animação
jab_cross.
30. Através da aba Inspector renomeie o estado para Jab
31. Na aba Animator clique na pequena engrenagem da Layer UpperBody.
32. Clique no input do campo Mask e selecione SciFiCharacter.
33. Altere o valor de Weight para 1
34. Selecione o GameObject Player através da aba Hierarchy e ative o botão Play.
35. Selecione a Base Layer e dê um clique duplo no Blend Tree Idle_Run.
36. Altere o valor de vSpeed para 0.5 no balão do Blend Tree.
37. Agora altere o valor de vSpeed para 1
38. Desative o botão Play.
39. Selecione a Layer UpperBody, clique com o botão direito dentro da área dos estados,
direcione o cursor sobre a opção Create State e selecione Empty.
40. Clique com o botão direito no novo estado e selecione a opção Set as Layer Default State.
41. Altere o nome do estado vazio para Empty.
42. Clique com o botão direito e crie uma transição do estado Empty para Jab.
43. Selecione a aba Parameters do Animator e crie um novo parâmetro do tipo Trigger cha-
mado Punch
44. Selecione a transição Empty para Jab e adicione o parâmetro Punch nas condições da
transição.
45. Crie uma nova transição de Jab para Empty.

46. Ative o botão Play e, enquanto a animação é executada, clique no parâmetro Punch para
visualizar o gatilho funcionado.
47. Desative o botão Play e salve a cena.
48. Para terminar, feche o Unity.

59
36. MECANIM - 3
Damos sequência com os estudos sobre o Mecanim, utilizando códigos de script para aperfeiço-
ar a movimentação do personagem. Exercite seu aprendizado resolvendo as questões sobre o tema.

1. O que é possível fazer através da opção Reset?

2. O que acontece quando se utiliza o atributo isGrounded em uma condição para a locomoção
do personagem?

Passo a passo:
1. Inicie o Unity e abra o projeto Exemplo Animação 3D.
2. Na aba Project crie uma nova pasta dentro de Assets chamada Character
3. Arraste o arquivo Controller SciFiCharacter, presente dentro da pasta SciFiCharacter,
para a pasta Character.
4. Exclua a pasta SciFiCharacter.
5. Renomeie o Controller para Y_Bot
6. Exclua o GameObject Player da cena.
7. Acesse a aba Scene e minimize o Unity.
8. Importe os arquivos FBX que se iniciam com o nome Y_Bot para a pasta Character. Se
precisar de ajuda para encontrar os arquivos, peça ao seu instrutor.
9. Instancie o prefab Y_Bot na cena, arrastando o arquivo até a aba Hierarchy.
10. Através da barra de menus crie um GameObject vazio e posicione-o nas coordenadas X:
0, Y: 0 e Z: 0.
11. Renomeie o novo GameObject para Player
12. Arraste o GameObject Y_Bot para cima de Player para torná-lo seu filho.
13. Com o objeto Y_Bot selecionado, na aba Inspector clique na engrenagem do componente
Animator e selecione a opção Copy Component.
14. Selecione o GameObject Player, clique na engrenagem do componente Transform e sele-
cione a opção Paste Component As New.
15. Selecione o GameObject Y_Bot, clique na engrenagem do componente Animator e sele-
cione a opção Remove Component.
16. Arraste o GameObject Main Camera para o Player.
17. Altere os valores da posição da Main Camera para 0 em X, 1 em Y e -2.2 em Z. Altere to-
dos os valores de rotação para 0
18. Selecione o GameObject Player e clique no botão Add Component na aba Inspector. Em
Physics escolha o componente Character Controller.
19. Certifique-se de que as propriedades Slope Limit e Step Offset estejam com os valores 45
e 0.3, respectivamente.
20. No campo Skin Width defina o valor 0.01
21. Em Min Move Distance insira o valor 0
22. Em Center defina o valor 0.9 no eixo Y.
23. Defina o valor 0.35 em Radius e altere o valor de Height para 1.8

60
24. Atribua o arquivo Controller Y_Bot ao componente Animator do GameObject Player.
25. Crie um GameObject Plane e o renomeie como Ground
26. Clique na engrenagem de seu componente Transform e selecione Reset.
27. Minimize a janela do Unity e importe o arquivo PNG chamado ground para a pasta Assets.
28. Arraste o arquivo da imagem até o GameObject Ground na aba Hierarchy.
29. Com o GameObject Ground selecionado, exiba as opções do campo Shader, direcione o
cursor sobre Unit e selecione Texture.
30. Expanda as opções do componente ground e altere os valores de Tiling para 8 em X e Y.
31. Altere os valores de escala do plano para 5 em X e 5 em Z.
32. Selecione o GameObject Player e acesse a aba Animator.
33. Com a Base Layer selecionada, dê um duplo clique sobre o estado Idle_Run e renomeie
o título para idle_walk
34. Clique no primeiro input Motion e selecione a animação idle com um duplo clique.
35. No segundo input Motion selecione a animação walking_inPlace.
36. Clique no Play do preview e teste a transição modificando o valor de vSpeed para 1
37. Desative o botão Play do preview.
38. Volte para a Base Layer e crie um novo estado. Nomeie esse novo estado como jump
39. No campo Motion selecione a animação jump.
40. Crie uma transição do estado Any State para jump.
41. Clique em Parameters da aba Animator. Renomeie o parâmetro Punch como jump
42. Selecione a transição Any State para jump e adicione o parâmetro jump à lista de condi-
ções.
43. Crie uma transição de jump para idle_walk e crie um parâmetro do tipo Trigger nomeado
como wave
44. Clique em Layers da aba Animator e selecione a Layer UpperBody.
45. Selecione o estado Jab e troque seu título para wave No campo Motion selecione a ani-
mação waving.
46. Selecione a transição Empty para wave. Mude o parâmetro das condições para wave.
47. Altere o nome do estado Empty para empty.
48. Acesse a aba Project e clique com o botão direito sobre a pasta Character, direcione o
cursor sobre Create e selecione Avatar Mask. Nomeie a máscara como Y_BotUpper
49. Selecione o prefab da animação idle, ative a opção Loop Time e clique em Apply.
50. Faça o mesmo com as animações walking_inPlace, left_turn e right_turn.
51. Selecione o Avatar Mask e expanda a sessão Transform. No campo Use skeleton from
selecione o arquivo Y_BotAvatar e, depois, clique em Import Skeleton.
52. Desative os três primeiros itens. Expanda os itens mixamorig:Hips e mixamorig:Spine e
ative o Bone filho mixamorig:Spine1.
53. Acesse a aba Animator e clique na pequena engrenagem da Layer UpperBody. Clique no
campo Mask e selecione o Avatar Mask.
54. Clique em Parameters dentro da aba Animator. Ative o botão Play para testar as anima-
ções.
55. Modifique o valor de vSpeed para 1 Ative o Trigger wave e, depois, o Trigger jump. De-
pois, desative o botão Play.
56. Crie mais dois parâmetros do tipo Bool, um chamado turnLeft e outro turnRight.
57. Clique em Layers e selecione Base Layer. Crie dois estados vazios e os nomeie como turn_
right e turn_left
58. Selecione o estado turn_right e no campo Motion selecione a animação right_turn. Alte-
re o valor de Speed para 0.9

61
59. Selecione o estado turn_left e em Motion selecione left_turn. Também altere o valor de
Speed para 0.9
60. Crie uma transição de turn_right para idle_walk. Selecione a nova transição e adicione o
parâmetro turnRight como false na lista de condições.
61. Crie uma transição de idle_walk para turn_right. Para transição adicione o parâmetro
turnRight como true.
62. Crie uma transição de turn_left para idle_walk. Selecione a transição e adicione o parâ-
metro turnLeft como false.
63. Crie uma transição de idle_walk para turn_left. Para a nova transição adicione o parâme-
tro turnLeft como true.

64. Acesse a aba Project e abra a pasta Character.


65. Minimize a janela do Unity e importe o arquivo SimpleController para a pasta Character.
66. Anexe o script SimpleController ao GameObject Player e ative o botão Play.
67. Utilize as setas para cima e para baixo para movimentar o personagem na cena. Após isso,
desative o botão Play.
68. Para encerrar, salve a cena e feche o Unity.

37. MECANIM - 4
Durante esse capítulo continuamos programando o GameObject Player de acordo com suas
animações, conhecendo também o recurso Sub State do componente Animator. Pratique o assunto
resolvendo as atividades referentes.

1. Nas lacunas abaixo marque V para verdadeiro ou F para falso de acordo com as afirmações:
( ) Na condição if (Input.GetButtonDown(“Jump”)) se verifica se as teclas <J>, <U>, <M> ou
<P> estão sendo pressionadas.
( ) Os Coroutines são métodos para multitarefas que são executados separadamente em
sub-rotinas.
( ) O código moveDirection = new Vector3(0, 0, 0); altera o valor de moveDirection para
um vetor vazio.
( ) Para criar um sub-estado utiliza-se a opção Create State.

62
Passo a passo:
1. Para começar, abra o Unity e o projeto Exemplo Animação 3D.
2. Selecione o GameObject Player e remova o componente do script.
3. Acesse a aba Project, abra a pasta Character e exclua o script SimpleController.
4. Minimize a janela do Unity e importe o arquivo SimpleController para a pasta Character.
5. Instancie o novo script ao GameObject Player.
6. Ative o botão Play e movimente o personagem utilizando as teclas de setas direcionais e
pulando com a tecla <Espaço>.
7. Após os testes na movimentação, desative o botão Play.
8. Na pasta Character, da aba Project, selecione o arquivo da animação jump.
9. Na sessão Animations, da aba Inspector, entre com o valor 20 em Start. Confirme clican-
do em Apply.
10. Acesse a aba Animator e, com a Base Layer selecionada, clique sobre a animação jump.
11. Modifique o valor de Speed na aba Inspector para 1.5
12. Ative o botão Play e teste o pulo do personagem teclando <Espaço>. Após isso, desative
o Play.
13. Ative o segmento de parâmetros da aba Animator e exclua o parâmetro jump, clicando
com o botão direito e selecionando Delete.
14. Crie um novo parâmetro do tipo Bool com o nome jump
15. Adicione o parâmetro jump nas condições da transição Any State para jump com o valor
true.
16. Selecione a transição jump para idle_walk e adicione o parâmetro jump em suas condi-
ções com o valor false.
17. Desmarque a opção Has Exit Time.
18. Em Base Layer clique com o botão direito na área dos estados e selecione a opção Create
Sub-State Machine. Renomeie o Sub-State para different_actions
19. Crie um parâmetro do tipo Int chamado actions

20. Dê um clique duplo no Sub-State different_actions para abri-lo e procure pelo balão (es-
tado) (Up) Base Layer, clicando e arrastando com o botão de Scroll do mouse.
21. Crie três estados próximo ao balão atual.
22. Renomeie o primeiro entre os três estados para kneeling_down No campo Motion sele-
cione o arquivo de animação kneeling_down.

63
23. Selecione o segundo estado e o renomeie para kneeling Em Motion selecione a animação
kneeling.
24. Selecione o último estado vazio e o renomeie para standing No campo Motion selecione
a animação standing.

25. Volte para a Base Layer e crie uma transição de idle_walk para different_actions. Direcio-
ne o cursor sobre States e selecione kneeling_down.
26. Clique em Play e teste a movimentação utilizando as setas direcionais do teclado. Depois
de observar a animação, desative o botão Play.
27. Salve a cena e feche o programa.

38. MECANIM - 5 E PARTÍCULAS


Finalizamos os estudos sobre o Mecanim e começamos a trabalhar com o sistema de partículas
do Unity. Exercite seu aprendizado resolvendo as atividades sobre o tema.

1. Em relação ao GameObject, como o Particle System é utilizado?

2. Qual a relação de dependência entre as opções Lenght e Emit from?

Passo a passo:
1. Abra o Unity e o projeto Exemplo Animação 3D.
2. Na aba Animator dê um clique duplo no Sub-State para abri-lo.
3. Selecione a única transição presente no Sub-State e adicione o parâmetro actions na lista
de condições.
64
4. Exiba as opções de sua caixa de listagem, selecione Equals e defina o valor 1
5. Crie uma transição de kneeling_down para kneeling. Também crie uma transição de kne-
eling para standing.
6. Selecione a transição de kneeling para standing e adicione o parâmetro actions na lista
de condições. Defina a opção Equals, mantenha o valor 0 e desmarque a opção Has Exit
Time.
7. Crie uma nova transição de standing para (Up) Base Layer, direcione o cursor sobre Sta-
tes e selecione idle_walk.
8. Dê um clique duplo no estado (Up) Base Layer.
9. Selecione o GameObject Player e remova o seu componente de script.
10. Acesse a aba Project, abra a pasta Character e delete o arquivo SimpleController.
11. Minimize a janela do Unity e importe o arquivo SimpleController para a pasta Character.
12. Instancie o novo script ao GameObject Player.
13. Acesse a aba Animator, selecione a transição de idle_walk para different_actions e des-
marque a opção Has Exit Time.
14. Ative o botão Play e teste a movimentação do personagem, pressionando a tecla <Ctrl>
ou o botão esquerdo do mouse para agachar. Faça o mesmo para poder levantar-se.
15. Desative o botão Play e salve a cena.
16. Feche o projeto atual e abra o projeto Terreno. Se precisar de ajuda para encontrá-lo,
peça ao seu instrutor.
17. Na barra de menus clique em GameObject e selecione Particle System.
18. Com o GameObject Particle System selecionado, altere seus valores de posição para 350
em X, 150 em Y e 200 em Z.
19. Altere também a rotação do eixo X para -90
20. Clique no título da aba Scene e tecle <F>.
21. Observe as partículas sendo emitidas. Clique em Pause no painel Particle Effect.
22. Minimize a janela do Unity e importe o arquivo rainTexture para a pasta Assets.
23. Através da barra de menus crie um GameObject vazio e o renomeie para Cachoeira
24. Na aba Hierarchy arraste o GameObject Particle System para o objeto Cachoeira.

65
25. Renomeie o GameObject Particle System para Agua
26. Altere seus valores de rotação para 0 em X e -90 em Y. Mantenha Z em 0.
27. Na aba Inspector expanda a sessão Shape e exiba as opções do primeiro campo.
28. Teste os tipos de Shape disponíveis, observando as alterações na emissão das partículas.
Após isso, selecione a opção Cone.
29. Altere o valor de Angle para 0 e o valor de Radius para 3
30. Visualize a simulação das partículas. Depois, salve a cena e feche o Unity.

39. CACHOEIRA
Nesse capítulo aprendemos novos recursos do sistema de partículas. Resolva os exercícios a
seguir para praticar o conteúdo.

1. Relacione as opções abaixo com suas respectivas descrições:


( 1 ) Duration
( 2 ) Render Mode
( 3 ) Start Delay
( 4 ) Color Over Lifetime

( ) Determina o tempo de espera para iniciar a emissão.


( ) Determina o “tempo de vida” da emissão.
( ) Determina como o sprite da partícula será renderizado.
( ) Permite criar gradientes de cores ou efeitos de transparência.

Passo a passo:
1. Para iniciar, abra o Unity e o projeto Terreno.
2. Selecione o GameObject Agua, filho do objeto Cachoeira.
3. Em Inspector expanda a primeira sessão, nomeada como Agua, ative a opção Prewarm e
reproduza a simulação.
4. Altere o valor de Start Lifetime para 3 e o valor de Start Speed para 8
5. Clique na seta ao lado do campo Start Speed e selecione a opção Random Between Two
Constants. Defina os valores para 20 e 25, respectivamente.
6. Altere também o valor de Start Lifetime para 5
7. Clique na seta do campo Start Size e selecione Random Between Two Constants. Altere
os valores, respectivamente, para 15 e 1
8. Agora altere o valor do segundo campo para 20
9. Modifique o valor do campo Gravity Modifier para 9.6
10. Após observar as alterações, reduza a sessão Agua, desça a barra de rolagem e exiba as
opções de Renderer.
11. Dentro da pasta Assets crie um novo material e atribua o nome cachoeira
12. Selecione novamente o GameObject Agua, filho de Cachoeira. Desça a barra de rolagem
do Inspector até a sessão Renderer.
13. Atribua o novo material ao campo correspondente.
14. Selecione o material cachoeira na pasta Assets. Com ele selecionado, arraste a imagem
rainTexture para o campo Albedo.
15. Clique no campo Shader, direcione o cursor sobre Particles e selecione Additive (Soft).
16. Selecione novamente o GameObject Agua e visualize as alterações na cena.
17. Reduza o item Renderer e suba a barra de rolagem da aba Inspector. Expanda a opção
Emission.
66
18. Aumente o valor de Rate over Time para 160
19. Selecione o GameObject Cachoeira e altere sua posição para 355 em X, 45 em Y e 255
em Z.
20. Altere sua rotação para -66 em Y e mantenha X e Z em 0.
21. Selecione novamente o GameObject Agua.
22. Reduza o item Emission e expanda o item Shape.
23. Modifique o valor de Angle para 55
24. Para encerrar, salve a cena e feche o Unity.

40. CACHOEIRA E FOGO


Praticamos um pouco mais a edição de partículas, complementando nossa cachoeira e criando
um efeito de fogo. Na sequência encontram-se alguns exercícios para prática.

1. No Particle System o que o campo do item Collision possibilita?

2. O que o item Size Over Lifetime do sistema de partículas permite?

67
Passo a passo:
1. Abra o Unity e o projeto Terreno.
2. Selecione o GameObject Agua, filho de Cachoeira.
3. Na aba Inspector reduza todas os itens do sistema de partículas exceto o item Agua.
4. Altere o valor de Start Size para 35
5. No campo Start Rotation altere o tipo de valor para Random Between Two Constants.
Para o primeiro valor defina -25 e para o segundo defina 25
6. Duplique o GameObject Agua e renomeie o clone para Fumaça.
7. Torne o GameObject Fumaça filho do objeto Agua.
8. Na pasta Assets crie um novo material chamado waterDust.
9. Com o novo material selecionado, clique no campo Shader, direcione o cursor sobre Par-
ticles e selecione Additive (Soft).
10. Minimize a janela do Unity e importe o arquivo de imagem smoke para a pasta Assets. Se
precisar de ajuda para encontrar o arquivo, peça ao seu instrutor.
11. Selecione o material waterDust e arraste a imagem smoke até o campo da textura na aba
Inspector.
12. Selecione o GameObject Fumaça e expanda o item Renderer do Particle System.
13. Arraste o arquivo waterDust até o campo Material do item Renderer.

14. Reduza o item Renderer e suba a barra de rolagem até o item Fumaça.
15. Altere o valor de Gravity Modifier para 1
16. Modifique os valores de Start Speed para 12 e 15, respectivamente.
17. Clique no campo Start Color para exibir suas opções e digite o valor B2B2B293 em Hex
Color.
18. Feche a janela de opções de cor e altere o tipo de valor de Start Size para Random Betwe-
en Two Constants.
19. Para esses campos entre com os valores 25 e 30, respectivamente.
20. Reduza o item atual e expanda o item Emission. Para o valor de Rate Over Time digite 140
21. Reduza o item Emission e clique em Stop na aba Scene. Depois, clique em Simulate para
visualizar o efeito.

68
22. Duplique o GameObject Agua. Altere a posição do novo GameObject para 88 em X, 0 em
Y e 5 em Z.
23. Modifique também sua rotação para 0 em X e -25 em Y. Mantenha Z em 0.
24. Selecione o GameObject FPSController. Altere sua posição para 256 em X, 22 em Y e 330
em Z.
25. Ative o botão Play e ande pelo cenário para visualizar o terreno e as cachoeiras.
26. Após se movimentar pelo cenário, desative o botão Play.
27. Salve a cena e feche o Unity.

41. USER INTERFACE (UI)


Foi iniciado o estudo sobre UI (User Interface), onde vimos alguns termos como UX e HUD, entre
outros recursos. Pratique o conteúdo resolvendo as atividades a seguir.

1. Ao que se referem os termos UX e HUD?

2. Qual a função do atributo Render Mode do componente Canvas?

Passo a passo:
1. Inicie o Unity e crie um novo projeto 3D chamado User Interface
2. Na barra de menus clique em GameObject, direcione o cursor sobre UI e selecione Scroll-
bar.
3. Ative a opção 2D na aba Scene.
4. Selecione o GameObject Canvas e tecle <F> dentro da aba Scene. Ajuste a visualização
para enxergar bem o retângulo do Canvas com a barra dentro.
5. No componente Canvas exiba as opções do campo Render Mode e selecione Screen Spa-
ce - Camera.
6. Acesse a aba Game e selecione o GameObject Scrollbar.
7. Altere os valores de posição para 0 nos eixos X e Y.
8. Mude também a rotação do eixo Y para 45
9. Selecione o GameObject Canvas e arraste o objeto Main Camera até o input Render Ca-
mera do componente Canvas.
10. Após observar as alterações, remova a câmera do campo Render Camera, selecionando-a
e teclando <Delete>.
11. Modifique o Render Mode para World Space.
12. Digite o valor 0 em todos os campos de posição.
13. Agora, para o valor da posição do eixo Z, digite 200
14. Troque o Render Mode para Screen Space - Camera novamente.
15. Arraste o GameObject Main Camera para o campo Render Camera do componente Canvas.
16. No componente Canvas Scaler exiba as opções de UI Scale Mode e selecione Scale With
Screen Size.
69
17. Exiba as opções de resolução da barra de menus da aba Game e selecione 16:10.
18. Após visualizar as diferenças, altere a resolução para 4:3.
19. Modifique a opção de resolução para Free Aspect.

20. Altere novamente o valor de UI Scale Mode, do componente Canvas Scaler, para Constat
Pixel Size.
21. Salve a cena na pasta Assets com o nome ExemploHuds.
22. Feche o Unity.

42. RECT TRANSFORM - 1


No decorrer desse capítulo conhecemos mais componentes do Canvas e praticamos o uso de
seus recursos. Exercite seu aprendizado resolvendo as atividades referentes ao conteúdo.

1. Analise as afirmações:
( 1 ) Todo elemento de UI é representado como uma circunferência para edição de layout,
assim como no 2D.
( 2 ) A opção stretch une a âncora posicionando as etiquetas nas mesmas posições.
( 3 ) Ao modificar o ponto âncora de um elemento os campos de posição alteraram seus va-
lores automaticamente para poder se manter na posição atual.
( 4 ) Quando há apenas um ponto como âncora, com as quatro etiquetas no mesmo local, o
elemento UI possibilita a edição da largura e altura do elemento.

Estão corretas somente:


a) 1 e 2.
b) 1 e 3.
c) 2 e 4.
d) 3 e 4.
70
Passo a passo:
1. Abra o Unity e o projeto User Interface.
2. Acesse a aba Scene e desative a opção 2D.
3. Minimize a janela do Unity e importe a pasta Character para a pasta Assets.
4. Abra a pasta Character e crie uma instância do prefab Player, arrastando para a aba Hie-
rachy.
5. Remova o GameObject Main Camera que está fora do GameObject Player.
6. Crie um GameObject Plane e zere todos os seus campos de posição. Além disso, altere
sua escala para 4 nos eixos X e Z.
7. Selecione a pasta Assets na aba Project.
8. Nessa pasta crie um material chamado Ground. Para sua cor defina um tom de azul e, em
Smoothness, entre com o valor 0
9. Aplique o material no GameObject Plane.
10. Abra a pasta Character na aba Project.
11. Crie uma instância do prefab NPC e, com ele selecionado, clique no título da aba Scene e
tecle <F>.
12. Renomeie o GameObject Canvas para TalkBalloon Depois, torne TalkBalloon filho do ob-
jeto NPC.
13. Com TalkBalloon selecionado, exiba as opções de Render Mode e selecione World Space.
14. Altere os valores de sua escala para 0.01 em X, 0.01 em Y e 0 em Z.
15. Para sua posição defina os valores 1.2 em X, 2.4 em Y e 0 em Z. Altere sua rotação em Y
para 180
16. Delete o GameObject Scrollbar.
17. Clique com o botão direito sobre o nome do GameObject TalkBalloon na aba Hierarchy,
direcione o cursor sobre a opção UI e selecione Text.
18. Selecione o GameObject Text, clique sobre o título da aba Scene e tecle <F>.
19. No campo Text, da aba Inspector, digite o texto: Olá! Você precisa de ajuda?
20. Exiba as opções do campo Vertical Overflow e selecione Overflow.

71
21. Centralize o texto através dos botões de Alignment.
22. No campo Width digite o valor 180
23. Acesse a aba Game e selecione o botão Maximize On Play.
24. Ative o botão Play e se aproxime do NPC.
25. Desative o botão Play e reduza o GameObject NPC.
26. Crie um novo Canvas através da barra de menus.
27. Mude o valor de Render Mode para Screen Space - Camera.
28. Expanda o GameObject Player e arraste o GameObject Main Camera, filho de Player,
para o campo Render Camera.
29. Altere o valor do campo UI Scale Mode para Scale With Screen Size.
30. Para o campo Plane Distance digite o valor 1
31. Na aba Hierarchy clique com o botão direito sobre o novo Canvas, direcione o cursor so-
bre UI e selecione Text.
32. Renomeie o GameObject Canvas para HUD Selecione seu GameObject Text e o renomeie
para CharacterName
33. Com o CharacterName selecionado, clique no quadrado de opções de pivô e selecione a
opção stretch com center.
34. Salve a cena e feche o programa.

43. RECT TRANSFORM - 2


Continuamos aprendendo a como trabalhar com o componente Rect Transform do sistema de
Canvas. Para desenvolver seu entendimento sobre o assunto, faça os exercícios relacionados.

1. Qual a função do campo Screen Match Mode?

2. O que o valor Match, ativado quando a opção Match Width Or Height está selecionada, per-
mite?

Passo a passo:
1. Inicie o Unity e abra o arquivo User Interface.
2. Acesse a aba Scene e ative o botão 2D.
3. Clique com o botão direito do mouse sobre o GameObject HUD na aba Hierarchy, direcio-
ne o cursor sobre UI e selecione Button.
4. Clique no quadrado de opção de âncora e selecione a opção stretch que possui as etique-
tas posicionadas uma em cada ponta do Canvas.
5. No componente Rect Transform entre com o valor 150 em Left e Right.
6. Em Anchors altere o valor de Min do eixo X para 0.5.
7. Ative o botão Play e exiba as opções de resolução. Selecione o ícone de adição para adi-
cionar uma nova resolução.
8. Em Label digite 800x600

72
9. Entre com o valor 800 em Width e 600 em Height.
10. Mantenha a opção Fixed Resolution e clique em OK.
11. Seguindo os passos anteriores, crie mais uma resolução com as medidas 1920 por 1080.
12. Selecione a resolução 800x600 e observe as alterações. Depois, troque para a resolução
1920x1080.

13. Desative o botão Play.


14. Com o GameObject Button selecionado, em Anchors, altere o valor de Min no eixo Y para
0.5
15. Entre com o valor 0 nos campos Bottom, Top, Left e Right.
16. Ative o botão Play e troque a resolução para 800x600.
17. Desative o botão Play após visualizar a cena.
18. Clique no quadrado do tipo de âncora e selecione a primeira opção left.
19. Entre com o valor 0 em Pos X. Também mude o valor do campo X de Pivot para 0
20. Ative o botão Play e defina a resolução 1920x1080.
21. Volte para a opção de resolução 800x600 e desative o botão Play.
22. Para finalizar, salve a cena e feche o Unity.

44. COMPONENTES DO CANVAS - 1


Conhecemos outros componentes do Canvas, como Text e Image. A seguir encontram-se alguns
exercícios para prática.

1. Qual a função do recurso de texto Best Fit?

73
2. O que os tipos de imagem Tiled e Filled permitem?

Passo a passo:
1. Para começar, abra o Unity e o projeto User Interface.
2. Selecione e expanda o GameObject HUD.
3. Ajuste a visualização da aba Scene para melhor observar o Canvas.
4. Selecione o GameObject CharacterName e apague o conteúdo do campo Text.
5. Em Text digite: Seja bem-vindo!
6. Arraste o GameObject CharacterName para uma posição inferior ao Button, mantendo-o
como filho de HUD.
7. Com o CharacterName selecionado, defina o valor 25 em Font Size.
8. Minimize o Unity e importe a pasta fonts para a pasta Assets.
9. Abra a pasta fonts e, com o GameObject CharacterName selecionado, arraste a fonte
North até o campo Font.
10. Através do campo Color defina um tom de vermelho.
11. Altere a âncora para left e top e, no campo Height, digite 40
12. Exiba as opções de Vertical Overflow e selecione Overflow.
13. Marque a opção Best Fit.
14. Centralize o texto com as opções de Alignment.
15. Clique com o botão direito sobre o GameObejct HUD na aba Hierarchy, direcione o cursor
sobre UI e selecione Image.
16. Clique no input Source Image e escolha a imagem UISprite.
17. Defina o valor 200 em Width e Height.
18. Altere também sua posição em X para -200
19. Exiba as opções de Image Type e selecione Simple.
20. Ative a opção Preserve Aspect.
21. Volte para o tipo de imagem Sliced e desative a opção Fill Center.
22. Acesse a pasta Assets, minimize o Unity e importe o arquivo JPG nomeado como imageS-
lice para a pasta Assets.
23. Selecione o arquivo de imagem na aba Project e troque o valor de Texture Type para
Sprite (2D and UI).
24. Clique em Apply para aplicar as alterações.
25. Selecione o GameObject Image e arraste o arquivo imageSlice para o input de imagem.
26. Selecione o arquivo imageSlice e mude o valor de Max Size para 512. Clique em Apply.
27. Clique no botão Sprite Editor.
28. Entre com os valores 254 em L, 248 em R, 256 em T e 251 em B. Confirme as alterações
clicando em Apply e feche o Sprite Editor.
29. Em Pixels Per Unit entre com o valor 512 e clique em Apply.
30. Selecione o GameObject Image e altere o tipo de imagem para Sliced.
31. Ative a opção Fill Center e altere o tipo de âncora para right com top.
32. Entre com o valor 1 nos campos X e Y de Pivot.
33. Defina o valor 0 para os valores dos três campos de posição.
34. Modifique os valores de Width e Height para 300 e 400, respectivamente.
35. Exiba as opções de Image Type e selecione Tiled.
36. Ative o botão Play e alterne entre as resoluções para ver como a UI se comporta.

74
37. Volte para a resolução 800x600 e desative o botão Play.
38. Para encerrar, salve a cena e feche o Unity.

45. COMPONENTES DO CANVAS - 2


Continuamos com o conteúdo a respeito dos componentes do Canvas, conhecendo e utilizando
novos recursos. Exercite seu aprendizado resolvendo as atividades referentes.

1. Marque V para verdadeiro ou F para falso de acordo com as afirmações:


( ) O componente Image possui similaridade com componentes que trabalham com textu-
ras. Já o Raw Image possui uma similaridade com o Sprite Renderer.
( ) O recurso Raycast consiste na técnica de criar uma linha não visível que começa em um
ponto e continua infinitamente em alguma direção.
( ) O tipo Physics Raycaster é usado para elementos de UI, com componentes exclusivos.
( ) O recurso EventSystem possibilita o uso de interfaces de classes que ajudam a trabalhar
com interações.

Passo a passo:
1. Abra o Unity e o projeto User Interface.
2. Clique com o botão direito no GameObject HUD, direcione o cursor sobre a opção UI e
selecione Raw Image.
3. Desative os GameObjects Button e Image, filhos de HUD.
4. Minimize o Unity e importe a pasta UI para a pasta Assets.
5. Abra a pasta UI.
6. Renomeie o GameObject RawImage para Photo
7. Arraste o arquivo de imagem char-texture para o campo Texture.
8. Troque a posição da âncora para top com right.

75
9. Modifique os valores do pivô para 0 e 1 em X e Y, respectivamente.
10. Altere os valores de posição em X para -110 e em Y para -10
11. Selecione o GameObject CharacterName e desative-o.
12. Clique com o botão direito sobre o GameObject HUD, direcione o cursor sobre UI e sele-
cione Panel.
13. Altere o tipo de âncora do Panel para top com stretch.
14. Mude os valores do pivô em X para 0 e em Y para 1
15. Para o valor da posição em Y digite 0 Também altere o valor de Height para 120
16. Renomeie o GameObject Panel para Status
17. Selecione o arquivo SF Button na aba Project. Para o tipo de textura defina a opção Sprite
(2D and UI) e clique em Apply.
18. Abra o Sprite Editor e, nos campos da borda, digite 13 em L, 12 em R, 14 em T e 14 em B.
19. Clique em Apply e feche o Sprite Editor.
20. Selecione o GameObject Status e arraste o arquivo SF Button para o campo Source Image.
21. Arraste os GameObjects CharacterName e Photo para o Status.
22. Selecione o GameObject Photo e altere seus valores de tamanho, em Width e Height,
para 75
23. Mude também sua posição em X para -100 e em Y para -20
24. Selecione o GameObejct CharacterName e ative-o. Altere sua posição em X para 600 e
em Y para -50
25. Apague o conteúdo do campo Text e digite Jogador
26. Selecione o GameObject Status e exiba as opções de cor do componente Image. Defina
um tom de vermelho escuro.
27. Ative o botão Play e ande pelo cenário. Mude a resolução para visualizar as diferenças.

28. Após observar as alterações, volte para a resolução 800x600 e desative o botão Play.
29. Salve a cena e feche o Unity.

76
46. SPACE STRIKE – 1
Nesse capítulo conhecemos os demais elementos de UI para formulários. Faça as atividades
para praticar o conteúdo estudado.

1. Qual a função do componente Scroll Rect?

2. O que os componentes Image e Mask, do GameObject Viewport, possibilitam ao Unity?

Passo a passo:
1. Para iniciar, abra o Unity e o projeto Jogo de Nave.
2. O projeto já foi previamente adaptado com alguns recursos para facilitar o trabalho do
usuário. Para começar, expanda os GameObjects Menu, menuSettings e ContentHolder.
3. Clique com o botão direito em ContentHolder, direcione o cursor sobre UI e selecione
Scroll View.
4. Selecione e expanda o GameObject Scroll View. Depois, abra a pasta ss-ui-sprites na aba
Project.
5. Desça a barra de rolagem da aba Inspector até visualizar todo o componente Image.
6. Clique dentro do input Source Image e tecle <Delete>.
7. Clique no campo de cor para exibir suas opções e entre com o valor 0 no campo A. Após
isso, feche a janela de cores.

77
8. Suba a barra de rolagem até visualizar o componente Scroll Rect. Então, desmarque a
caixa de verificação Horizontal.
9. Selecione o GameObject Viewport.
10. Minimize o Unity e abra o arquivo texto-padrao. Se precisar de ajuda para encontrar o
arquivo, peça ao seu instrutor.
11. Selecione todo o seu conteúdo escrito e tecle <Ctrl> + <C> para copiá-lo.
12. Feche o Bloco de Notas e volte ao Unity.
13. Expanda o GameObject Viewport, clique com o botão direito sobre Content e crie um
elemento UI de texto.
14. Apague o conteúdo do campo Text e tecle <Ctrl> + <V> para colar o texto.
15. Altere a cor do texto para branco.
16. Mude seu ponto de âncora para top e center e, depois, modifique sua posição em Y para
0
17. Em Vertical Overflow altere o valor para Overflow.
18. Ative o botão Play e teste a barra de rolagem do menu, descendo e subindo.
19. Desative o botão Play.
20. Salve a cena e feche o Unity.

47. SPACE STRIKE - 2


Damos continuidade a edição do projeto, implementando novos recursos e iniciando a codifica-
ção da UI. A seguir encontram-se alguns exercícios para complementar seu estudo.

1. Qual a função do campo Handle Rect do GameObject Scrollbar Vertical?

2. O que o recurso Number of Steps, do GameObject Scrollbar Vertical, possibilita?

Passo a passo:
1. Abra o Unity e o projeto Jogo de Nave.
2. Para agilizar a edição, o projeto foi adaptado e teve alguns GameObjects reestruturados.
Primeiramente expanda os GameObjects Menu, menuSettings e ContentHolder.
3. Selecione o botão BtnBack e desça a barra de rolagem até o componente Button.
4. Em On Click insira uma nova ação a partir do botão de adição.
5. Arraste o GameObject menuMain, da aba Hierarchy, para o campo referente da nova
ação.
6. Exiba as opções da caixa de listagem de funções, direcione o cursor sobre GameObject e
selecione SetActive (bool).
7. Deixe o parâmetro bool como true, marcando sua caixa de verificação.
8. Adicione mais uma ação e arraste o GameObject menuSettings para o campo referente.
9. Para essa ação também defina o método SetActive (bool), mas deixe seu parâmetro bool
como false, desmarcando sua caixa de verificação.

78
10. Reduza o GameObject menuSettings e expanda menuMain e ContentHolder.
11. Selecione o objeto Settings e desça a barra de rolagem até o componente Button.
12. Adicione uma nova ação, referenciando o GameObject menuSettings.
13. Atribua o método SetActive (bool) e marque sua caixa de verificação.
14. Insira mais uma ação e, dessa vez, referencie o GameObject menuMain.
15. Defina o método SetActive (bool) e deixe seu parâmetro bool como false, desmarcando
sua caixa de verificação.
16. Reduza o GameObject Menu e ative o botão Play.
17. Dentro da cena clique no botão Ajustes.

18. Desative a opção Sound On/Off.


19. Exiba as opções da caixa de listagem referente ao tipo de nave e selecione Green Ship.
20. No campo de texto digite seu nome.
21. Clique no botão Voltar e, depois, clique em Ajustes novamente.
22. Observe que as opções ficaram salvas. Desative o botão Play.
23. Na aba Project abra a pasta Scripts.
24. Minimize a janela do Unity e importe o arquivo de script Config para a pasta Scripts.
25. Para encerrar, salve a cena e feche o Unity.

48. SPACE STRIKE – 3


Durante esse capítulo completamos o visual da UI de nosso jogo de exemplo. Desenvolva seu
aprendizado resolvendo as atividades a seguir.

79
1. O que é possível fazer através do código using UnityEngine.UI;?

2. Qual a função do componente Horizontal Layout Group?

Passo a passo:
1. Inicie abrindo o Unity e o projeto Jogo de Nave.
2. Para facilitar nosso trabalho o projeto foi ajustado com scripts já codificados e novos com-
ponentes adicionados. Crie um GameObject vazio através da barra de menus e o reno-
meie para GameConfig.
3. Selecione a pasta Scripts e atribua o script Config ao GameObject GameConfig.
4. Com o objeto GameConfig selecionado, expanda os dois atributos na aba Inspector. Digite
5 para o campo Size de ambos.
5. Selecione a pasta Prefabs_done. Para os campos de Ships Prefabs To Show arraste o pre-
fab Example_1 para o campo Elment 0, Example_2 para Element 1 e assim por diante.
6. Faça o mesmo com os campos de Ships Prefabs To Play, mas na seguinte sequência: Re-
dShip, ShipBlue, ShipYellow, ShipBrown e ShipGreen.
7. Expanda os objetos de UI até o ContentHolder de menuSettings.
8. Selecione a pasta Scripts e atribua o script FormConfig ao GameObject ContentHolder.
9. Expanda o ContentHolder para exibir seus filhos.
10. Selecione o GameObject ContentHolder e arraste os respectivos objetos (Toggle, player-
Name e playerShip) até seus campos na aba Inspector.
11. Selecione o BtnBack e adicione uma ação em seu On Click. Arraste o ContentHolder até
essa ação.
12. Exiba as funções para essa ação, direcione o cursor sobre FormConfig e selecione Save-
Settings.
13. Selecione o GameObject playerShip e adicione uma ação em seu On Value Changed. Ar-
raste o GameObject ContentHolder para o campo correspondente.
14. Exiba suas funções, direcione o cursor sobre FormConfig e selecione ChangeShip.
15. Salve a cena Menu. Acesse a aba Game e ative o botão Play. Certifique-se de que a opção
Maximize On Play esteja ativa e o modo de resolução no Free Aspect.
16. Faça o teste no menu, selecionando a nave e definindo um nome em Ajustes. Depois,
desative o botão Play.
17. Acesse o menu File e clique em Save Scene as. Salve a cena com o nome Level na pasta
Assets.
18. Renomeie o Menu para UI. Depois, exclua o menuSettings.
19. Expanda o menuMain e exclua os objetos TitleHolder e ContentHolder.
20. Altere o nome de menuMain para status.
21. Com o GameObject status selecionado, altere a âncora para top e left.
22. Altere os valores de seu pivô para 0 em X e 1 em Y. Defina o valor 0 para seus três eixos
de posição.
23. Mantenha o valor de Width em 300 e altere o valor de Height para 100.
24. Remova o item do campo Source Image, selecionando-o e teclando <Delete>.
25. Clique em seu campo de cor e altere o valor de Hex Color para FFFFFF00. Feche a janela
de cores.

80
26. Crie um novo elemento UI Image como filho de status e renomeie para PhotoHolder.
27. Com o objeto PhotoHolder selecionado, altere a âncora para top e left. Para os campos
de pivô defina 0 em X e 1 em Y. Zere os seus valores de posição.
28. Altere a imagem para SF Button com a opção Sliced.
29. Modifique também seu Hex Color para 00A5B4FF.
30. Crie um novo Image como filho de PhotoHolder e renomeie para photo.
31. Com photo selecionado, selecione o tipo de âncora stretch com as etiquetas em cada
ponta.
32. Defina o valor 12 para os campos Left, Top, Right e Bottom.
33. Com a pasta ss-ui-scripts aberta, arraste o arquivo ship-r para o campo Source Image.
34. Crie um novo Image como filho de status e renomeie para HealthHolder.

35. Altere sua âncora para top e left. Mude o valor do pivô em X para 0 e em Y para 1. Zere
os seus valores de posição.
36. Em Width defina 200 e em Height defina 50. Depois, altere sua posição em X para 95.
37. Em Source Image altere a imagem para SF Button com a opção Sliced.
38. Modifique seu Hex Color para 00A5B4FF.

81
39. Clique em Add Component, busque por Horizontal Layout Group e selecione-o para adi-
cioná-lo.
40. Expanda os campos de Padding. Digite o valor 10 em Left e Right.
41. Em Top defina o valor 2. Já em Spacing defina 2.8.
42. Selecione a opção Middle Left no alinhamento dos itens e certifique-se de que apenas a
opção Height de Child Force Expand esteja ativa.
43. Crie um elemento texto filho de status e renomeie para Name. Mantenha Horizontal
Overflow e Vertical Overflw com a opção Overflow.
44. Altere sua âncora para top e left, seu pivô para 0 e 1 e sua posição em X para 100 e em Y
para -50. Mantenha o seu tamanho com 160 em Width e com 30 em Height e a posição
de Z em 0.
45. Troque a fonte do texto para Tron. Deixe-o alinhado ao topo com o tamanho 22 e cor
branca.
46. Salve a cena e feche o Unity.

49. SPACE STRIKE – 4


Continuamos a edição de nosso projeto de exemplo, quase finalizando o jogo. Resolva as ativi-
dades referentes para continuar seus estudos.

1. Em nosso projeto, para que o script AsteroidSpawner foi utilizado?

2. Qual a diferença entre os métodos applyDamage e addHealth?

Passo a passo:
1. Abra o Unity e o projeto Jogo de Nave.
2. Para auxiliar em nosso trabalho o projeto foi ajustado com scripts já codificados. Atribua
o script Level ao GameObject status.
3. Selecione o GameObject status. Atribua os GameObjects photo para o campo Ship Sprite,
Name para Player Name e HealthHolder para Health Holder.
4. Expanda as opções do campo Ships e digite 5 em Size.
5. Abra a pasta ss-ui-sprites. Arraste ship-r para o campo Element 0, ship-bl para Element 1,
ship-y para Element 2, ship-b para Element 3 e ship-g para Element 4.
6. Pressionando <Shift>, selecione todos os prefabs de nave que possuem colisores. Ative a
opção Is Trigger.
7. Selecione o GameObject status e atribua o prefab heathIcon ao campo Health Pref.
8. Crie uma nova câmera e a renomeie para UICamera. Zere todos os seus valores de posi-
ção.
9. Em Clear Flags selecione a opção Don’t Clear.
10. Em Culling Mask deixe somente a opção UI selecionada.
11. Instancie cada uma das naves na aba Hierarchy.

82
12. Selecione cada nave individualmente em Hierarchy, clique no botão Apply e, depois, de-
lete o GameObject.
13. Selecione o GameObject UI e atribua a nova câmera ao campo Render Camera.
14. Selecione todos os prefabs dos asteroides e remova o script de rotação.
15. Crie um GameObject vazio através da barra de menus e o renomeie para Destroyer.
16. Crie uma Tag chamada Destroyer.
17. Selecione o objeto Destroyer e altere sua posição para 0 em X, 0 em Y e -10 em Z.
18. Adicione um Box Collider a esse GameObejct.

19. Ative a opção Is Trigger.


20. Em Size defina o valor 100 em X e em Y.
21. Atribua a tag Destroyer a ele.
22. Salve a cena e feche o Unity.

50. SPACE STRIKE - 5


No último capítulo finalizamos o nosso mini game e aprendemos a compilar um jogo no Unity.
Resolva as atividades a seguir para desenvolver seu entendimento sobre o assunto.

1. Analise as afirmações:
( 1 ) O recurso de compilação está disponível no menu File, através da opção Build Settings.
( 2 ) Ao abrir o arquivo executável de um jogo compilado do Unity, não é possível definir op-
ções de gráfico, tendo somente uma resolução disponível.
( 3 ) No Unity compilar um jogo refere-se a compartilhar seu projeto e postá-lo na Asset Sto-
re.
( 4 ) Entre as opções de compilação, em Plataform define-se a plataforma na qual o jogo será
executado.

Estão corretas somente:


a) 1 e 2.
b) 1 e 4.
c) 2 e 3.
d) 3 e 4.

83
Passo a passo:
1. Para iniciar, abra o Unity e o projeto Jogo de Nave.
2. Alguns recursos e scripts já foram adaptados para que o projeto esteja quase finalizado,
facilitando a edição do usuário. Com a cena Menu aberta, acesse o menu File e selecione
a opção Build Settings.
3. Clique no botão Add Open Scenes para adicionar essa cena.
4. Feche essa janela e, na pasta Assets, dê um duplo clique na cena Level para abri-la.
5. Clique em File e selecione Build Settings.
6. Clique em Add Open Scenes e feche essa janela.
7. Abra novamente a cena Menu.
8. Acesse a aba Game e verifique se as opções Free Aspect e Maximize On Play estão ati-
vadas.
9. Ative o botão Play para testar o jogo.
10. Dentro da cena clique em Ajustes e digite seu nome no campo referente.
11. Clique em Voltar e, depois, clique em Iniciar.
12. Teste o jogo se movimentando com a nave. Após isso, desative o botão Play.
13. Exiba as opções do menu File e selecione Build Settings.

14. Em Platform mantenha a opção PC, Mac & Linux Standalone selecionada.

84
15. Em Target Platform mantenha a opção Windows e em Architecture mantenha x86. Cli-
que em Build para compilar o jogo.
16. Na janela de salvamento defina a Área de Trabalho como local.
17. Dentro da Área de Trabalho crie uma nova pasta com o nome Jogo Finalizado.
18. Abra a nova pasta e, em Nome, digite Jogo de Nave
19. Confirme clicando em Salvar.
20. Após o processo de compilação, feche a janela Build Settings, salve a cena e feche o Unity.
21. Dentro da pasta Jogo Finalizado abra o arquivo executável Jogo de Nave.
22. Na aba Graphics exiba as opções de Screen Resolution e selecione 800x600.
23. Ative a opção Windowed, selecione a qualidade Good e clique em Play.
24. O jogo foi executado! Clique em Ajustes, selecione uma nave e defina um nome de joga-
dor.
25. Clique em Voltar e, depois, clique em Iniciar.
26. Teste o jogo. Após isso, feche sua janela.
27. Abra novamente o arquivo executável Jogo de Nave.
28. Desative a opção Windowed e altere a resolução para 1024x768.
29. Em Graphics quality selecione a opção Fantastic.
30. Clique em Play e teste novamente o jogo, escolhendo uma nave diferente.
31. Assim que desejar, feche o jogo. Quando ele está em tela cheia é possível fechá-lo teclan-
do <Alt> + <F4>.
32. Para terminar, feche a pasta Jogo Finalizado.

85
Anotação

86

You might also like