Bruno C. de Paula
Introdução ao
Aquecimento para a Global Game Jam
Resumo
Vamos conhecer a engine Unity 3D
Focaremos nas principais
ferramentas e recursos que o
Unity disponibiliza
05/11/2015
O que é o Unity?
 Unity
é um ambiente multiplataforma de
desenvolvimento de jogos;
 Suporte a: Windows / MacOS / Web / Wii e
Wii Ware / iPhone;
 Breve: Android / Xbox 360 e PS3.
3
Características do Unity
Editor de Níveis
 Fortemente
jogo;
05/11/2015
integrado com a execução do
4
Características do Unity
Editor de Níveis
 Suporte
a Drag & Drop e customização;
05/11/2015
5
Características do Unity
Editor de Níveis
 Editor
de terrenos e lightmaps;
05/11/2015
6
Características do Unity
Gráficos
 Suporte
a Direct3D 9 e OpenGL;
05/11/2015
7
Características do Unity
Importação
 Importação
de modelos, texturas, bones e
animações de Maya, 3DS, Cheetah 3D,
Blender, Wavefront obj...
 Heightmaps, Fontes, audio.
05/11/2015
8
05/11/2015
9
Características do Unity
Shaders
 Efeitos
de Glow, Blur, Noise, etc
05/11/2015
10
Características do Unity
Física / PhysX
 Suporte
a corpos rígidos;
 Junções;
 Ragdolls;
 Wheel Collider para jogos de carro;
05/11/2015
11
Características do Unity
Scripting
 Linguagens
de Scripting:
JavaScript (muuuito rápido, palavra!);
C# (Mono);
Boo (similar a Python).
05/11/2015
12
05/11/2015
Vamos para a prática!
13
05/11/2015
Interface básica
14
05/11/2015
Interface básica
 Scene
View (Cena): editor de níveis;
 Project View (Projeto): arquivos do projeto;
 Hierarchy View (Hierarquia): objetos que
estão na cena e sua relação;
 Game View (Jogo): Visualização da
aplicação sendo executada;
 Inspector View (Inspetor): Acesso aos
componentes dos objetos;
15
05/11/2015
Navegação na Scene View
 Principais
Atalhos:
Q, W, E, R;
 ALT + mouse;
 Leitura altamente recomendada:
http://unity3d.com/support/documentation
/Manual/Learning%20the%20Interface.htm
l
http://docwiki.unity3d.com/uploads/Main/G
UI%20Essentials.pdf
16
Assets
 Arquivos
do Projeto;
05/11/2015
Game Objects
 Elementos
de um jogo;
 Arquitetura baseada em composição;
 Objeto de jogo é especificado através da
composição de várias funcionalidades
(COMPONENTES);
 Todo game object já nasce com um
componente transform;
 Cada GameObject é um repositório de
componentes.
18
05/11/2015
Componente Transform
 Posicionamento
(x, y, z) [W], rotação
(ângulo) [E] e escala [R];
19
05/11/2015
Local Space e World Space
 X,
Y e Z são em
relação ao
elemento pai;
20
05/11/2015
Game Objects disponíveis
21
Tipos de Game Object
Cube, Sphere, Capsule, Cylinder, Plane
 Cubo,
esfera, cápsula, cilíndro e plano;
 Cada um está associado a um componente
Mesh Filter com aspecto diferente;
 Colide com outros corpos por padrão;
Tipos de Game Object
Luzes
 Point light:
Luz proveniente de um ponto;
Luz com localização específica;
Espalha a partir do ponto;
 Spotlight:
Vem de um ponto;
Localização específica;
Gera cone de luz;
Tipos de Game Object
Luzes
 Directional
Light:
Vem de uma direção;
Não tem localização específica;
Luz paralela;
Mais forte nas áreas quadradas;
Mais fraco nas angulações;
Sol;
Tipos de Game Object
Camera
 Capturam
05/11/2015
e mostram o mundo ao jogador;
25
Tipos de Game Object
GUI Text e GUI Texture
 Texto
e Imagens em 2D;
 Útil para criação da HUD;
Tipos de Game Object
Particle System
 Sistema
de Partículas, formado por:
Emissor, animador e renderizador;
05/11/2015
27
Tipos de Game Object
Ragdoll
 Simulação
no estilo
“boneco de pano”;
 Útil para
“representação de
mortos”;
 Ver video:
http://www.youtu
be.com/watch?v=
g0lTE4sCyKI
*
Componentes
 Podem
ser associados a Game Objects;
 Definem:
Comportamento;
Aparência;
 Podem ser scripts;
 Vamos analisar alguns.
Tipos de Componentes
Mesh
 Cada
modelo é formado por polígonos;
 Um conjunto de polígonos associados é uma
mesh;
 Mesh Filter: pega uma malha dos Assets e
passa ao renderizador;
 Mesh Renderer: Renderiza uma malha a
partir de um material;
 Você pode gerar um mesh em programas
como 3DMax, Blender, Maya, etc.
 O Unity trabalha com os formatos FBX, 3DS,
OBJ...;
 Meshs podem ser animadas via script;
Exemplo de Mesh
(em destaque)
Sites com modelos gratuitos
O
*
site do Unity:
Recursos
Tutoriais:
• Jogo de carro, Plataforma 3D, Plataforma 2D,
FPS, Animação.
Projetos Exemplo:
• FPS, Customização de Personagens
 http://www.turbosquid.com/Search/3D-
Models/free/fbx
 http://www.open3dproject.org/
Tipos de componentes
Física

Baseado no engine de física PhysX (Nvidia);
Rigidbody: Objeto que age sobre o controle da
física;
 Constant Force: força constante;
 Colliders:
Geometrias básicas de colisão;
Box, Sphere, Capsule, Mesh, Wheel (roda),
Raycast;
 Joints:
Junções;
Restrições no grau de liberdade;

Tipos de componentes
Hinge Joint
 Simulação
de dobradiça;
Tipos de componentes
Spring Joint
 Simulação
de mola;
 Distância máxima de separação e retorno à
posição original;
Tipos de componentes
Fixed Joint
 Conexão
entre 2 corpos;
 Similar à hierarquia de transformação;
 Útil quando os corpos podem ser
desconectados durante a simulação;
*
Scripts
 JavaScript,
C# e Boo;
 Criação em Assets > Create;
 Scripts são associados a Game Objects como
componentes;
Alguns eventos importantes
 Update:
executada uma vez por frame;
 FixedUpdate: chamada de tempos em
tempos em um intervalo fixo (física);
 OnCollisionEnter: chamado quando ocorre
a colisão;
Referências a componentes
 transform:
posicionamento, rotação e
escala;
 rigidbody: corpo rígido;
 animation: controle dos ciclos de
animação;.
 renderer: exibição do componente em
cena;
 audio: fonte de audio;
 collider: geometria de colisão;
05/11/2015
A seguir, alguns fragmentos de
códigos usando o Unity
40
Exemplo
Faz um objeto girar
var velocidade = 5.0;
function Update ()
{
print("Olá, Mundo");
transform.Rotate(0, velocidade*Time.deltaTime, 0);
}
Exemplo
Move a posição a partir do teclado
function Update ()
{
transform.Translate(Input.GetAxis("Horizontal"),
0,
Input.GetAxis("Vertical"));
}
Exemplo
Olha para um alvo
var alvo : Transform;
function Update ()
{
transform.LookAt(alvo);
}
Prefabs
 Prefabs
são objetos
reutilizáveis
armazenados na
Project View;
 Funcionam como
modelos de
objetos;
Exemplo
Cria um novo objeto – Instantiate
var novoObjeto
: Transform;
function Update ()
{
if(Input.GetButtonDown("Fire1"))
{
Instantiate(novoObjeto,
transform.position,
transform.rotation);
}
}
Exemplo
Carrega outro nível
 Application.LoadLevel("Nome
nivel");
Exemplo
Envia uma mensagem para um outro objeto




// O outro objeto deve possuir uma função chamada
// AplicarDano
function OnCollisionEnter (collision : Collision) {
collision.gameObject.SendMessage("AplicarDano");
}
Exemplo
Destruir o objeto atual
 function
AplicarDano() {
Destroy(gameObject);
}
05/11/2015
*
48
05/11/2015
Conclusões
O
Unity pode ser útil em uma Game Jam pois:
É fácil de integrar o trabalho de um
programador e de um artista;
Já vem com funcionalidades de física ,
editor de ambientes, testes de colisão, etc;
 Cuidados!
Nem sempre um jogo 3D é fácil de se
balancear;
49
05/11/2015
Mais material?
 http://www.brunocampagnolo.com/engines20
10/
50
Download

Transform - Global Game Jam em Curitiba