Boas-vindas e introdução
Introdução e por que utilizar a Unity3D
Preparando a Unity: versões e configurações
Entendendo o espaço de trabalho do jogo
Asset Store e importação de assets
Preparação do primeiro jogo
Definição da proposta e exibição dos assets
Câmera, Física e Controladores
Colliders e Rigidbody
Manuseio da câmera
Movimentação de personagens - Adicionando movimento
Movimentação de personagens - Andando
Movimentação de personagens - Pulando e Physics Material
Movimentação de personagens - Pulando e GroundDetector
Ferramentas visuais
Manipulando a animação por script
Criando cenário utilizando os assets e manipulando materiais
Iluminação e tipos de luzes
Animação do Player
Game Manager
Condição de vitória, detalhes adicionais e pensamentos futuros
Condição de derrota
Inimigo e spawn de prefabs
Preparação do segundo jogo - Coffee Catch
Definição da proposta e exibição dos assets
Geração de builds
Gerando build de Windows
Gerando build de Mac e Linux
Câmera, Física e Controladores - Coffee Catch
Câmera Top Down para o Coffee Catch
Movimentação Top Down
Rotacionando o personagem utilizando o LookAt
Ferramentas visuais - Coffee Catch
Criando cenário para jogos Top Down
Dando Bake na iluminação da cena
Animação do Player, Inimigos e do Robô
O sistema de NavMesh - Coffee Catch
Criando o inimigo e utilizando o NavMesh system
Game Manager - Coffee Catch
Criando a condição de vitória
Criando moedas coletáveis
Interface de Usuário (UI)
Adicionando UI para as moedas
Adicionando UI para a tela de game over
Sistemas adicionais
Usando coroutines para finalizar o jogo
Usando coroutines para ações repetitivas
Usando partículas para a coleta de moedas
Sistema de áudio
Post processing
Conclusões finais
Pensamentos futuros do projeto e finalização do curso
Leitura
Olá! Na aula passada, aprendemos a criar tipos especiais de métodos chamados Coroutines. Este tipo de método facilita a manipulação de tempo, pois no corpo do método podemos declarar “retornos de tempo”, tal como:
Este comando faz com que a execução do método seja interrompida durante 2 segundos antes de prosseguir para as próximas instruções presentes no método.
Para declarar Coroutines, você precisa declarar um novo método cujo tipo de retorno é IEnumerator. Por exemplo:
Também aprendemos que a maneira de executar este tipo especial de método é feito da seguinte maneira:
É possível também iniciar Coroutines passando como argumento o nome do método alvo. Em termos de otimização, esta alternativa é um pouco mais cara, mas ainda assim é possível. Basta fazer da seguinte maneira:
Coroutines podem ser bastante úteis na criação de ações sequenciais na qual se deseja esperar diversas vezes por um timer. Por exemplo, podemos criar “cut-scenes” bem simples através de coroutines. Basta executar uma ação de cada vez, dando pequenos intervalos de tempo entre cada ação.
Além disso, também podemos utilizar coroutines para criar facilmente ações que são repetidas de tempos em tempos, sempre com um intervalo entre cada ação. Neste exemplo, iremos criar um portão de lasers que irá ser ativado e desativado repetidamente durante o nosso jogo. Caso o Player entre em contato com os lasers, o jogo reinicia.
Para começa, digite na área de busca da sua aba “Project” a seguinte palavra: SecurityGate
Após isso, selecione o primeiro asset que aparcer na lista. Você pode conferir se é o asset correto conferindo o diretório onde este se encontra. Confira de acordo com a imagem a seguir:
Ao encontrar o asset correto, arraste-o para a cena e centralize-o na posição (0, 0, 0). Você poderá ver um modelo 3D na cena com uma coloração estranha, como demonstrado na imagem a seguir.
Selecione o modelo e coloque o valor de 270 na rotação no eixo X.
Agora, na aba Project, pesquise novamente pela palavra SecurityGate. Selecione o Material que tem esse nome, como demonstrado na imagem a seguir.
Arraste e solte este material no modelo 3D que você adicionou recentemente na cena. A coloração estranha irá sumir e você poderá ver que agora ele possui o material correto.
Na aba Hierarchy, clique com o botão direito no modelo 3D que você adicionou. O nome do objeto é: SecurityGate. No menu, clique em “3D Object -> Plane”. Isto irá criar um novo Plane dentro do objeto SecurityGate. Ajuste a escala para (0.2, 0.15 e 0.15). Agora ajuste a posição para (0, 0, 1).
Na aba Project, pesquise pela palavra “LazerWall”. Selecione o primeiro resultado da pesquisa, que é o material correspondente à parede de lasers. Arraste e solte o material para cima do novo Plane que você criou. O resultado deve ficar assim:
Agora que temos o nosso visual da parede de lasers pronto, vamos criar os scripts!
Crie um novo script chamado Gate. A ideia para este script é de fazer com que ele ative e desative a parede de lasers a cada 2 segundos, durante todo o jogo, através do uso de coroutines.
A princípio, vamos criar uma variável que vai guardar uma referência à parede de lasers. Vamos chamá-la de “lasers”.
Agora vamos criar a nossa coroutine que vai ser repetida durante o jogo todo. Vamos declarar uma nova coroutine chamada “LasersCorountie”. Dentro do corpo deste método, vamos declarar um loop infinito através de um “while(true)” para que este aconteça durante o jogo todo. Agora, para que não aconteça um loop infinito, vamos declarar os retornos de tempo dentro deste nosso loop.
Este é o fluxo:
1 - Ativa os lasers
2 - Espera 2 segundos
3 - Desativa os lasers
4 - Espera 2 segundos
5 - Repete todos os passos
O script ficará da seguinte maneira:
Você já pode salvar o seu script e aplicá-lo ao objeto chamado SecurityGate presente na sua cena. Quando adicionar o script, a variável chamada “lasers” ainda vai estar com referência vazia. Coloque a variável para apontar para a parede de lasers que criamos previamente.
Agora crie um novo script chamado Lasers. A ideia desse script é simples: se for detectada colisão com o Player, o jogo deve reiniciar. Bem, como já fizemos este tipo de código durante este curso, segue o código completo:
Adicione o script de lasers à parede de lasers, que é ativada e desativada durante o jogo. Por último, vá na componente de colisão da parede de lasers e marque os campos “Conex” e “IsTrigger” como verdadeiro.
Pronto! Agora temos uma parede de lasers que utiliza coroutines para realizar ações repetidamente.
Se por um acaso algo não tiver ocorrido como desejado, você pode baixar o projeto na seção de arquivos e também pode postar dúvidas nesta aula.
Obrigado e até a próxima!
Contribuições 0
Perguntas 0
As contribuições, perguntas e respostas são vitais para aprender em comunidade. Registre-se ou faça login para participar .