Aprenda a fazer jogos com Unity e C#
Felipe Nunes
Quem sou eu
Indigente
Interactive Digital Entertainment
Grupo de desenvolvimento de jogos da UFBA�https://indigente.github.io/
O que vamos fazer?
Daremos o primeiro passo para que vocês possam criar seus próprios jogos no Unity.
Criaremos dois jogos para concretizar o nosso aprendizado.
Conhecendo o Unity
Indigente0
Interface
Game Objects
Sprite
[Hierarchy] 2D Object > Sprite
Rename > Player
SpriteRenderer > Knob
Play
Rigidbody2D
Corpo Físico
Gravidade
Dynamic | Kinematic
Play
Collider 2D
Colisões
2D e 3D
Play
Testando a colisão
[Hierarchy] 3D Object > Quad
Por que 3D?
Removendo o Mesh Collider
DESAFIO
Adicione um Collider 2D apropriado para o Quad
Posicione o Quad de forma que entre em contato com o Player ao iniciar o jogo
Aperte Play e veja o que acontece
Variáveis
Tipos de Variaveis
Int: 0, 6, 42, -512, …
Float: 1.1, -0.2, 3.14, …
String: “aBc”, “42”, “xX_É_N01$!_Xx”, “z”, ...
Bool: true, false.�...
Usando o MonoDevelop
�
Edit > Preferences… > External Tools > External Script Editor > MonoDevelop (Built-in)
Player.cs
[Project] Create > C# Script
Start
Update
Criando um Obstáculo
Mexendo com a escala
DESAFIO
Crie mais obstáculos para que tenhamos 4 no total.
Lembre-se de substituir os Colliders 3D por 2D.
Mude a escala de dois objetos para: X = 4, Y = 0.25, Z = 1.
Criando o Rotator
Agrupar Obstáculos no Rotator
Alinhar os obstáculos para que formem um quadrado
Criando o Rotator
Obstáculo 1: X = 2, Y = 0�Obstáculo 2: X = -2, Y = 0�Obstáculo 3: X = 0, Y = 2�Obstáculo 4: X = 0, Y = -2
Demonstrar Rotação
Rotator.cs
[Project] Create > C# Script
transform.Rotate();
Como funciona rotação no Vector3
Time.deltaTime
30 FPS - 0.0333…
60 FPS - 0.0166…
0.033 * 30 = 1�0.016 * 60 = 1
Prefabs
Como criar um Prefab
Como funciona um prefab
DESAFIO
Crie um Prefab do Rotator e da Main Camera.
Trigger Collider
O que são os Triggers
DESAFIO
Transforme todos os Colliders presentes na cena em Triggers
Tenha certeza que as alterações serão aplicadas aos Prefabs
OnTriggerEnter2D
Adicionando a verificação de triggers ao Player.cs
OnTriggerEnter2D(Collider2D other)
Materials
Colorindo os objetos na nossa cena
[Project] Create > Material
Shader > Sprites > Default
Escolha a cor no Tint
DESAFIO
Crie um material para cada outro obstáculo na cena
Lembre-se de trocar o Shader para Sprites/Default
Após trocar todos, aplique as mudanças ao Prefab do Rotator
Camera
Alterando a cor de fundo
Tags
Adicionando etiquetas aos objetos
Modificando o Player.cs
Condicionais
Definindo a condição de derrota
Atribuindo uma tag ao Player
Informações
Documentação do Unity�https://docs.unity3d.com/ScriptReference/
Random.Range
Entendendo o Random Range
Criando um array
Coleção de variáveis
DESAFIO
Modifique seu array para que contenha todas as 4 tags criadas por você
O nome das tags no array tem que ser EXATAMENTE igual ao nome original
Aplique as mudanças ao Prefab do Player
Aleatorizando
Tags & Materials
Otimizando o jogo
Modificando os valores
Novas bordas para o quadrado
Layers
Ajustando a ordem em que visualizamos os objetos
DESAFIO
Ajuste a ordenação de todos as Sprites na cena (Objetos que contém SpriteRenderer: Player, Bordas)
O Player deve ficar sempre à frente de todos
A borda deve ficar a frente dos obstáculos, porém atrás do Player
Aplique as mudanças aos Prefabs
Reiniciando o jogo
using UnityEngine.SceneManagement;
File > Build Settings > Add Open Scenes
Calculando o Score
Criando uma UI
Mostrando o Score
using UnityEngine.UI;
Pronto? GO!
Começando o jogo apenas quando o jogador estiver preparado
Tecla de segurança
Sempre bom ter uma tecla para reiniciar o jogo
Gerando o .exe
Crie o executável para seu jogo
File > Build & Run
BONUS: Ajustes
Ajuste seus valores, veja qual fica melhor pro estilo de jogo que você quer.
Crie uma dificuldade que não seja frustrante nem tediosa.
BONUS: Progressão
Acelerando o Rotator a medida que o tempo passa.
Agora que você anda,
qual será seu próximo passo?
Recursos Disponíveis
https://github.com/thisfn/SEMCOMP-Unity/
http://bit.ly/UnitySemcomp
Global Game Jam
Evento anual
26 a 28 de Janeiro
Simultâneo em todo o mundo
UFBA - (?)
48 horas para fazer um jogo
Tema surpresa, revelado na hora do evento
Programadores, Artistas, Músicos, Aprendizes, …
Interessado?