Quem sou eu?
Caio Vinicius Marques Teixeira
Bacharelando em Sistemas de Informação
EACH-USP
Técnico em Informática
ETEC de Poá
Minhas experiências
TCC
Eventos
Game Jams
Palestras
Minhas experiências
FEA-USP / GETEC
Games for Change Europe
Coursera
Mas, não quero fazer jogos...
Tappy Plane
Vamos aprender na prática!
Unity: Views
http://docs.unity3d.com/Manual/LearningtheInterface.html
Project View
Acessar e gerenciar assets
◦ Assets: Recursos gráficos, sons, códigos, etc.
http://docs.unity3d.com/Manual/ProjectView.html
Unity Packages
Pacote de assets
◦ Compactado
◦ Compartilhar recursos entre diferentes projetos
Scene View
Permite visualizar, posicionar e gerenciar objetos no jogo.
Permite alterações com o jogo em execução!
http://docs.unity3d.com/Manual/SceneView.html
Hierarchy View
Exibe todos os objetos na cena atual
http://docs.unity3d.com/Manual/Hierarchy.html
Toolbar
http://docs.unity3d.com/Manual/Toolbar.html
Arquitetura Entity-Component
Todo objeto na Unity é uma “Entidade”.
◦ Permite desacoplamento de código
◦ Você não precisa mexer em código de baixo nível
http://gameprogrammingpatterns.com/component.html
Arquitetura Entity-Component
Componentes
◦ Definem “comportamentos” de objetos.
◦ Podem ser programados (scripts).
http://gameprogrammingpatterns.com/component.html
Inspector
Inspector view
◦ Permite alterar propriedades de componentes e variáveis
públicas de scripts.
◦ Alterações em tempo de execução!
http://docs.unity3d.com/Manual/Inspector.html
Game View
Jogo rodando. :)
http://docs.unity3d.com/Manual/GameView.html
Rigidbody
Como simular gravidade?
Colliders
Avião e obstáculos são apenas imagens na tela
Como saber que é um objeto sólido?
Colliders!
Scripts
Scripts = Componentes
Como criar? Como adicionar a um objeto.
Hello World!
Callbacks
Métodos executados automaticamente pela engine.
Start() – Executa quando um objeto é criado
Update () – Executa uma vez a cada frame
FixedUpdate() – Idem ao Update, deve ser usado para física e entrada.
Vector 3
Como representar movimentos?
Vetores!
Rigidbody.velocity
Altera a velocidade de um rigidbody com um Vector.
Input
KeyCodes
Input.GetKey
Scripts no Inspector
Variáveis públicas são exibidas no Inspector.
Obstáculos
Como fazer a progressão da cena?
Duas abordagens:
◦ Personagem e câmera se movem para frente
◦ Cenário movimenta para trás
Prefabs
Objetos “pré-fabricados”.
◦ Permite salvar um gameobject e seus componentes.
◦ Gerenciar múltiplos clones
Método Instantiate
◦ Permite criar clones de objetos.
Destruir objetos passados?
Método Destroy()
Callbacks OnBecameVisible e OnBecameInvisible
Não é a melhor solução...
Garbage Collector
◦ Pode rodar a qualquer instante
◦ Quedas de framerate...
Solução ideal: Object pooling
Reutilizar objetos
◦ Objeto foi destruído?
◦ Adicionar em uma lista de inativos
◦ Precisa de um novo objeto?
◦ Lista de inativos está vazia?
◦ Crie um novo
◦ Não está vazia?
◦ Reutilize
Gameover
Detectar colisão!
◦ Recarregar jogo.
Unity UI
Recurso novo!
◦ Unity 4.6 Beta.
Canvas
◦ Text
◦ Button
Colisão
Callbacks OnCollisionEnter e OnCollisionExit
Objeto Collision
Cenas
Cenas -> Níveis do jogo
Devem ser salvas e adicionadas ao build.
Application.LoadLevel
Pontuação
Como fazer?
Triggers
Triggers
◦ Detectar se objeto está em uma determinada “zona”.
Break
3D
3D vs. 2D
São independentes!
◦ 2D é recente.
◦ Podem coexistir no mesmo projeto e cena!
Motores físicos
Independentes
◦ Rigidbody vs. Rigidbody2D
◦ Collider vs. Collider2D
Standard Assets
Assets padrões da Unity
◦ Unity Packages
Antes, não faça isso em casa!
Vamos brincar um pouco com física e alguns
standard assets.
◦ Sem otimização alguma
Unity Terrain
First Person Controller
Standard Asset
◦ Implementa movimentação (pulo, andar, etc)
◦ Implementa camera
Brincadeiras com física
Vamos criar uma barreira gigante de caixas e
derruba-la. 
◦ Otimização nula!
Explosão?
Sistema de partículas
◦ Shuriken
Explosão do PhysX
Publicação
Como gerar executáveis? :)
◦ Windows, Linux, Mac
◦ Web
◦ Unity Web Player
◦ WebGL (Coming Soon)
◦ Android
◦ etc...
Antes de terminar, Bonus Stage
Como estudar Unity?
Unity Learn (http://unity3d.com/pt/learn)
Unity 3D Student (http://www.unity3dstudent.com/)
Unity Cookie (http://cgcookie.com/unity/category/tutorials/)
Digital Tutors (http://www.digitaltutors.com/training/unity-
tutorials)
Reddit (http://www.reddit.com/r/unity3D)
Evite Cargo Cult Programming!
Aprenda conceitos gerais!
Aprenda a teoria, o que acontece “por baixo”
Livros
◦ Introdução ao desenvolvimento de games, Steve
Rabin, vol.2
Sites
◦ Game Developer – Como ser um programador de
jogos? http://gamedeveloper.com.br/
◦ Game Programming Patterns -
http://gameprogrammingpatterns.com/
Faça jogos!
“A melhor forma de aprender a fazer jogos, é
fazendo.”
“Você fará pelo menos 10 jogos ruins antes de fazer
um realmente bom.”
Eventos
Conferências
Exposições
Game Jams
IGDA
Etc.
Participem! 
Reuniões todas as terças, às
16:00 na sala 221 do Titanic.
Dúvidas?
Obrigado.
caio.vinicius.teixeira@usp.br
github.com/caioteixeira
fb.com/caio.vinicius.m.teixeira

Introdução ao desenvolvimento de jogos com unity3d