Você está na página 1de 96

Book Unity.

indb 1

16/05/2012 19:11:05

sumrio
Captulo 1 - Introduo ferramenta Unity 3D 5
O qu, para qu, para quem, como.

Captulo 2 - Interface da Unity 3D 9


Toolbar, Scene, Hierarchy, Project, Inspector e Game

Captulo 3 - Principais conceitos

17

Game Objects, Game Components e Prefabs

Captulo 4 - Iluminao

23

Light, Directional Light, Spot light e Lightmap

Captulo 5 - Cmera

29

Perspective e Orthographic

Captulo 6 - Fsica

37

Rigidbody, Colliders e Triggers

Book Unity.indb 2

16/05/2012 19:11:05

Captulo 7 - Importao e criao de assets

43

Texturas 2D, audio, modelos 3D, animaes, materiais e shaders e prefabs.

Captulo 8 - Interface

47

GUI, GUI Text, GUI Texture, GUI Skin e GUILayout.

Captulo 9 - Terrenos

53

Relevo, Textura, rvores, Grama, gua, Pedras, Plantas, Vento, Sol, Packages

Captulo 10 - Som

67

Audio Source e Audio Clip

Captulo 11 - Criao de materiais e shaders

73

Tipos de Materias - introduo.

Captulo 12 - Scripting e Asset Store

79

Outras dicas.

Book Unity.indb 3

16/05/2012 19:11:05

Captulo 13 - Projeto de jogo completo, envolvendo arte e programao 85


13.1 Assuntos diversos:
Anexo A: Cdigos da apostila;
Anexo B: Diagramas de classes;
Referncias;
Declarao de direitos autorais.

Book Unity.indb 4

16/05/2012 19:11:05

U n i t y

3 D

C a p t u l o
I n t r o d u o

Book Unity.indb 5

f e r r a m e n t a

U n i t y

3 D

16/05/2012 19:11:05

U n i t y

3 D

Captulo 1 - Introduo ferramenta Unity 3D


Agora a coisa ficou sria!
- Meme

Unity 3D

O que vamos aprender neste captulo:


Neste captulo, iremos conhecer a Unity 3D e descobrir como
podemos desenvolver jogos com ela.

1.

O qu, para qu, para quem, como:

A Unity 3D uma engine focada no desenvolvimento de


jogos e aplicativos em tempo real. No a nica existente no
mercado, porm utilizada em grandes estdios e tambm no
desenvolvimento de jogos indie. Sua verso gratuita satisfaz a
maioria das necessidades de quem precisa ou quer desenvolver
um jogo. Possui rpida prototipagem, editor de cena, gerncia de
arquivos, excelente documentao e suporte.
Com poucos ajustes, o mesmo jogo pode ser exportado para
mais de uma plataforma. A Unity possui um sistema integrado
de gerenciamento e compresso de assets. Atravs de licenas
6

Book Unity.indb 6

16/05/2012 19:11:05

i n t r o d u o

f e r r a m e n t a

U n i t y

3 D

especficas possvel desenvolver para iOS, Android, Xbox 360,


PS3, Wii, alm de Windows, Mac e Web.
voltada para usurios com conhecimentos de medianos a
avanados, principalmente na parte de scripts, sendo recomendado
que o usurio j conhea alguma linguagem de programao.
Faa o download da verso gratuita em
http://unity3d.com/unity/download/
Faa o cadastro no (excelente) frum em
http://unity3d.com/support/community

Book Unity.indb 7

16/05/2012 19:11:05

ANOTAES

Book Unity.indb 8

16/05/2012 19:11:05

U n i t y

3 D

C a p t u l o
I n t e r f a c e

Book Unity.indb 9

d a

U n i t y 3 D

16/05/2012 19:11:05

U n i t y

3 D

Captulo 2 - Interface da Unity 3D

Janelas da Unity 3D

O que vamos aprender neste captulo:


Neste captulo, conheceremos o ambiente de desenvolvimento
da Unity 3D. Sua interface oferece ao desenvolvedor janelas
nomeadas Views (vises ou visualizaes ou, melhor ainda, abas)
que possuem, cada uma, funes diferenciadas.

1.

Interface

Antes de voc abrir um novo projeto, lembre de no importar os


packages gratuitos, caso no seja necessrio, para que seu projeto
no fique muito grande. Assim, quando voc abrir a Unity e cri-lo,
voc ver o seguinte:

Toolbar

= Barra de ferramentas
Contm atalhos para todos os outros comandos da Unity, bem
como para comandos comuns, como copiar e colar e abrir e salvar
projetos e cenas.

Scene

= Cena
10

Book Unity.indb 10

16/05/2012 19:11:05

I n t e r f a c e

d a

U n i t y

3 D

rea principal para posicionamento e orientao de objetos,


semelhantes a programas 3D. Possui uma cmera virtual para
visualizao, movida pelo teclado e podendo sofrer deslocamento
e rotao com o boto do meio e direito do mouse (QWER e ASD
so atalhos).
As cenas tambm esto armazenadas na rea de projeto e
normalmente so sinnimo para as fases do jogo.
possvel a separao da cena inicial como o menu de jogo,
por exemplo, ou o extremo de ter o jogo todo em uma nica cena.

Hierarchy

= Hierarquia
Nesta rea possvel ter acesso a todos os elementos presentes
na cena e identificar seu nvel de parentesco.
Atravs do menu Create, possvel criar um vasto nmero de
objetos como primitivas, terrenos e luzes.

Janela Hierarchy

11

Book Unity.indb 11

16/05/2012 19:11:05

U n i t y

3 D

Project

= Projeto
Aqui fica a gerncia de todos os assets e mdias presentes no
jogo (modelos 3D, sons, msicas e scripts). uma imagem da pasta
do usurio. A manipulao dos arquivos utilizados no projeto feita
por aqui, obrigatoriamente! No esquea de salvar sempre sua
cena e seu projeto. Tambm possui menu de Create para coisas
especficas (scripts, prefabs, pastas...).

Janela Project

Inspector

= Inspetor /propriedades
Aqui temos acesso a todas as informaes especficas para cada
objeto de jogo. Todos os objetos so, na verdade, um reservatrio
que pode conter um infinidade de componentes, inclusive scripts.

12

Book Unity.indb 12

16/05/2012 19:11:05

I n t e r f a c e

d a

U n i t y

3 D

Janela Inspector

Game

= Jogo
De grande praticidade, possvel testar o jogo facilmente. Temos
um preview do jogo, com estatsticas de performance e outras
informaes, e pode ser colocado para rodar automaticamente em
tela cheia.

Janela Game

13

Book Unity.indb 13

16/05/2012 19:11:05

U n i t y

3 D

Estatsticas de cena (para medida de performance):

Estatsticas de cena

FPS: taxa de quadros exibidos por segundo;


Draw calls: nmero de passos de renderizao para exibir
a cena (materiais e iluminao influenciam diretamente);
Batched: objetos que utilizam o mesmo material;
Tris e verts: quantidade de tringulos e vrtices visveis na cena;
Used textures: quantidade e memria usada pelas texturas em
cena;
Screen: resoluo da tela e memria utilizada;
VRAM: utilizao da memria de vdeo e memria de vdeo
mxima disponvel;
VBO: nmero de malhas 3D nicas repassadas placa de vdeo;
Visible skinned meshes e animations: nmero de malhas 3D
rigadas em cena e nmero de objetos animados em cena.

14

Book Unity.indb 14

16/05/2012 19:11:06

I n t e r f a c e

d a

U n i t y

3 D

No podemos esquecer do boto de layouts (ltimo direita)


onde podemos escolher entre 4 layouts padres e ainda salvar o
nosso:
Largo: adequado para manipulao de cena e objetos;
Alto: adequado para manipulao de atributos dos objetos;
4split: adequado para manipulao precisa de objetos;
2 por 3: adequado para rpida transio entre manipulao de
cena e teste do jogo.
Alm do boto de play (central) que nos permite rodar nosso
jogo.
Vale a pena aqui mostrar a aba de configuraes do projeto
exportado (build):

Configuraes de build

Onde devemos acrescentar as cenas que desejamos que sejam


exportadas, para qual plataforma, escolher um cone para o jogo,
entre outros detalhes.

15

Book Unity.indb 15

16/05/2012 19:11:06

ANOTAES

Book Unity.indb 16

16/05/2012 19:11:06

U n i t y

3 D

C a p t u l o
P r i n c i p a i s

Book Unity.indb 17

c o n c e i t o s

16/05/2012 19:11:06

U n i t y

3 D

Captulo 3 - Principais conceitos


How proud would the buildings of Rome
Look without a single stone
- Avantasia

Jogo de exemplo mostrado durante as aulas

O que vamos aprender neste captulo:



Vamos saber o que compe uma cena na Unity, o que so
objetos de jogo e seus componentes e o que so objetos prfabricados.

1.

Game Objects, Game Components, Prefabs

Em Unity, objetos de jogo (game objects) so recipientes que,


sozinhos, no tem funo, mas que podem receber diversos
componentes (game components) para se diferenciar uns dos
outros. Malhas, texturas, cdigos... so exemplos de componentes,
mas vrios destes podem compor um nico objeto de jogo.

18

Book Unity.indb 18

16/05/2012 19:11:06

P r i n c i p a i s

c o n c e i t o s

Mas eles tm sempre o componente transform para localizao

Entre os game objects, temos cmeras, luzes, interface textual


e primitivas bsicas.
As primitivas bsicas podem ser manipuladas como qualquer
editor de malhas 3d (3d max, maya, blender), e podemos mov-las,
gir-las e aument-las na tela (vide menu superior esquerdo).
DICA 1: Unity NO um editor de malha 3D, como os programas
citados. Ele apenas manipula as malhas nele criadas e importadas.
Vamos ver como fazer a importao nos prximos captulos.

19

Book Unity.indb 19

16/05/2012 19:11:06

U n i t y

3 D

DICA 2: NO fique preso ao visual. Enquanto as malhas no


ficam prontas nos programas de modelagem, use formas bsicas
para dar vida (script) ao seu jogo. Trabalhe a lgica, a programao...
Os componentes definem todas as funes de um game object,
diferenciando-os. Existe uma grande variedade de componentes e
sua composio pode gerar resultados interessantes.
Ateno especial com as luzes e a cmera neste momento; elas
so muito importantes.
Um game object vazio pode ser colocado em cena apenas para
receber scripts de controle. Se um script no estiver anexado a um
game object em cena, ele no executar.
Quando voc agrupar um conjunto de componentes em um
objeto complexo, e quiser salv-lo para reproduzi-lo depois, voc
tem um prefab. Veja mais sobre isso no captulo 7.

20

Book Unity.indb 20

16/05/2012 19:11:06

ANOTAES

Book Unity.indb 21

16/05/2012 19:11:06

Book Unity.indb 22

16/05/2012 19:11:06

U n i t y

3 D

C a p t u l o

I l u m i n a o

Book Unity.indb 23

16/05/2012 19:11:06

U n i t y

3 D

Captulo 4 - Iluminao
Haja luz; e houve luz
- Gnesis 1-3

Jogo de exemplo mostrado durante as aulas

O que vamos aprender neste captulo:


Neste captulo, iremos saber como tirar proveito das luzes e
seus tipos para criarmos uma boa cena em nosso jogo.

1.
Point Light, Directional Light, Spot light e
Lightmap.
Existem 3 tipos bsicos de iluminao dinmica: direcional,
pontual e spot. Vamos ver as caractersticas de cada uma. Existe
ainda um outro tipo de iluminao, por mapa de luz, que na verdade
uma textura aplicada a um objeto, esttica, e no ser vista aqui.
A iluminao deve ser utilizada de forma estratgica, no apenas
para permitir ou facilitar a visualizao da cena, mas tambm para
contribuir com a narrativa do jogo (deixando, por exemplo, um
ambiente mais aconchegante, tenebroso...).
Para testarmos as luzes, colocaremos um cubo na cena e a
24

Book Unity.indb 24

16/05/2012 19:11:06

I l u m i n a o

cmera principal configurada de maneira padro. No mexeremos


em nenhuma propriedade (veja captulo posterior).

Repare que o cubo aparece s escuras.


Vamos colocar uma luz direcional.

25

Book Unity.indb 25

16/05/2012 19:11:06

U n i t y

3 D

Uma luz direcional como se fosse uma luz colocada


infinitamente distante, afetando tudo na cena (imagine a luz do Sol,
por exemplo).
Estas so as propriedades de uma luz direcional:

Ento, quando colocamos uma luz, podemos mudar o tipo dela.


Suas principais propriedades so a cor e a intensidade. Interessante
notar que podemos marcar o tipo de sombra dinmica que esta
luz faz: nenhuma ou sombra soft ou sombra hard. Infelizmente
estes dois ltimos tipos de sombras dinmicas s so presentes
na Unity PRO.
Vamos mudar essa luz para o tipo spot:

Veja quanta informao na imagem acima. Mas fique calmo! A


imagem ficou pequena, mas no nada que j no tenhamos visto.
Vamos, ento, comentar cada aba:
26

Book Unity.indb 26

16/05/2012 19:11:06

I l u m i n a o

Primeiramente uma do tipo spot ilumina tudo, em um cone


definido nas suas propriedades (ngulo e alcance). Na imagem
acima vemos como fica o cubo, na cena de jogo, iluminado por
aquela luz que estava em certa posio e foi apontada para ele,
com um certo alcance (range), ngulo de abertura (angle), cor e
intensidade. Fcil, no?
Por ltimo, uma luz pontual (point light) ilumina igualmente em
todas as direes, afetando todos os objetos em seu alcance.

27

Book Unity.indb 27

16/05/2012 19:11:06

ANOTAES

Book Unity.indb 28

16/05/2012 19:11:06

U n i t y

3 D

C a p t u l o

C m e r a

Book Unity.indb 29

16/05/2012 19:11:06

U n i t y

3 D

Captulo 5 - Cmera
Luz, cmera, ao!
- David W. Griffith, diretor norte-americano , 1875-1948

Jogo de exemplo mostrado durante as aulas

O que vamos aprender neste captulo:



Neste captulo, iremos ver a importncia do uso das cmeras e
seus tipos em jogos 3d.

1.

Perspective - Orthographic

A cmera fundamental para visualizao da cena no jogo,


sendo impossvel fazer um jogo sem ela. H, inclusive, uma
Main Camera j criada, independe da cmera virtual usada para
visualizao da cena no editor.
A cmera no somente utilizada para visualizao da cena,
mas tambm seus atributos, vistos a seguir, so importantes para
definir certos padres visuais que o jogo ir seguir (como ser 2D
ou 3D).
O principal atributo da cmera se ela do tipo perspectiva ou
ortogonal. A cmera em perspectiva leva em considerao o eixo Z,
mostrando profundidade e muitas vezes deformando a visualizao
dos objetos de forma correspondente. A cmera ortogonal ignora
30

Book Unity.indb 30

16/05/2012 19:11:06

C m e r a

o eixo Z, mostrando todos os objetos com o mesmo tamanho no


importando o quanto distantes eles estejam da cmera. Muitos
jogos de estratgia e de simulao utilizam a projeo ortogonal
como linguagem (viso lateral superior, 2.5 D).
Apenas objetos visveis pela cmera na cena so visveis na tela
de jogo.
Uma cmera tem diversas propriedades: posio onde est,
direo para qual aponta (alvo), ngulo de abertura etc. Estas
propriedades so mostradas nas prximas imagens.
O exemplo abaixo mostra a mesma cena com uma visualizao
em perspectiva e outra em ortogonal:

Cena de jogo com projeo em perspectiva.


Note que se consegue observar o volume da caixa e visualizar
uma parte do seu interior.

31

Book Unity.indb 31

16/05/2012 19:11:07

U n i t y

3 D

Mesma cena com projeo ortogonal.


Note a diferena na caixa, que parece chapada. No houve
nenhuma outra mudana nas propriedades da cmera, alm do
tipo de projeo.

Propriedades da cmera.

32

Book Unity.indb 32

16/05/2012 19:11:07

C m e r a

Todas so obviamente importantes, mas vamos comentar


sobre algumas: A projeo pode ser perspectiva ou ortogonal. Em
perspectiva, temos o campo de viso, equivalente ao ngulo de
abertura da cmera, e os planos de corte de perto e de longe.
Ressalte-se que se o plano for mais perto ou mais longe do que o
mostrado no exemplo no possvel renderiz-lo.

Vemos a mudana para cmera ortogonal (ou ortogrfica),


onde temos o tamanho como atributo, o tamanho do frustum de
visualizao.
O termo Frustum, embora sem traduo, fcil de se compreender,
pois representa o quanto a cmera consegue enxergar. Veja a
imagem abaixo.

Lembrando que em Unity o sentido do eixo Z negativo para fora


da tela.
Uma ltima imagem mostrando a criao de duas cmeras, uma
de cada tipo.

33

Book Unity.indb 33

16/05/2012 19:11:07

U n i t y

3 D

Note a previso de visualizao da cmera na janela da cena.


Estas cmeras podem ser posicionadas e ou rotacionadas e
podemos mudar seu frustum apenas clicando e arrastando os
pontos brancos frente. Podemos trat-las como qualquer
outro objeto, instanciando, fazendo a ligao (parent), colocando
o componente fsico rigidbody, ter mais de uma renderizando
diferentes pores da cena em diferentes posies da tela (como
num retrovisor de um carro) e colocar programao nelas, uma vez
que a Unity vem com alguns scripts de cmera pr-programados
(Experimente em Components->Camera Control).
Existem muitas possibilidades, ainda mais com a licena PRO.
Seja um diretor de jogos!

34

Book Unity.indb 34

16/05/2012 19:11:07

ANOTAES

Book Unity.indb 35

16/05/2012 19:11:07

Book Unity.indb 36

16/05/2012 19:11:07

U n i t y

3 D

C a p t u l o

F s i c a

Book Unity.indb 37

16/05/2012 19:11:07

U n i t y

3 D

Captulo 6 - Fsica
... Haja Newton e tudo se iluminou.
- Alexander Pope, poeta ingls, 1688-1744, para o epitfio de Isaac
Newton, fsico ingls

Jogo de exemplo mostrado durante as aulas

O que vamos aprender neste captulo:


Neste captulo, iremos conhecer como a Unity 3D usa a fsica
para facilitar a criao de jogos e criar resultados interessantes.

1.

Rigidbody, Colliders e Triggers

Unity d um excelente suporte para acrescentar fsica em seu


jogo de forma fcil. Vamos ver como isso pode ser feito:
Para que eu coloque um objeto em cena que se comporte
fisicamente, devo acrescentar o componente RigidBody (corpo
rgido) a ele. Pegando o exemplo do cubo da cena de iluminao,
acrescento outro cubo para servir de cho, ajeito as posies e
tamanhos e rotaes e minha cena fica assim:
38

Book Unity.indb 38

16/05/2012 19:11:07

F s i c a

Agora acrescento o componente RigidBody ao cubo (no ao cho)


e, automaticamente, quando der play na cena, ele cai! O objeto
est obedecendo s leis fsicas da gravidade.
Como eu quero que este objeto agora colida com o cho, devo
ento anexar o componente Collider e, especificamente neste
caso, BoxCollider. Mas no basta que o cubo seja BoxCollider, o
cho tambm precisa ter este componente de forma que colidam
entre si.
Existem 5 tipos de componentes de coliso, mas somente um de
cada vez pode ser anexado a um objeto. E isto em ordem crescente
de exigncia de clculos, ou seja, em ordem decrescente de
performance. So:
Sphere > Box > Capsule > Mesh > Wheel.
O Wheel Collider especial para pneus de carros.
Triggers (gatilhos)
Muitas vezes queremos verificar as colises apenas para saber se
um personagem ou objeto entrou em certa rea (por exemplo, se a
gua passou pela porta). Se usarmos um componente collider vai
haver efetivamente coliso entre os objetos! Definir o componente
collider como trigger apenas faz com que todas as informaes de
coliso sejam passadas, sem o choque fsico entre o objeto trigger
e o objeto collider.
fcil definir os triggers, veja na imagem:

39

Book Unity.indb 39

16/05/2012 19:11:07

U n i t y

3 D

Todo objeto que possui os componentes de collider ou trigger no


cdigo, possui chamadas automticas dos seguintes mtodos:
void OnCollisionEnter(Collision collision) {};
void OnCollisionStay(Collision collision) {};
void OnCollisionExit(Collision collision) {};
void OnTriggerEnter(Collision collision) {};
void OnTriggerStay(Collision collision) {};
void OnTriggerExit(Collision collision) {};
Os Enters detectam o incio da coliso; os Exits seu fim. E os Stays
so chamados a cada frame da coliso. Assim, os programadores
podem utilizar tais mtodos para definir comportamentos (como
tocar um alarme ao se chegar em certa rea ou receber um dano
ao colidir com um inimigo).
Com o collider e o trigger, consideramos apenas o componente que
descreve a rea de coliso dos objetos; mas estes so estticos,
isto , no sofrem gravidade, inrcia ou atrito.
O componente RigidBody simula objetos fsicos dinmicos. Com
ele os objetos passam a ser influenciados pela gravidade e recebem
impulsos vindos de colises com outros objetos. Vamos analisar o
painel de propriedades de um objeto com RigidBody:

40

Book Unity.indb 40

16/05/2012 19:11:07

F s i c a

Observando alguns detalhes, temos: massa relativa do objeto,


se ele usa gravidade ou no, alm de restries (constrains) de
movimento.
Voc consegue, com isso, fazer um cilindro andando e pulando em
plataformas flutuantes?

41

Book Unity.indb 41

16/05/2012 19:11:07

ANOTAES

Book Unity.indb 42

16/05/2012 19:11:07

U n i t y

3 D

C a p t u l o
I m p o r t a o

Book Unity.indb 43

c r i a o

d e

a s s e t s

16/05/2012 19:11:07

U n i t y

3 D

Captulo 7 - Importao e criao de assets

Jogo de exemplo mostrado durante as aulas

O que vamos aprender neste captulo:


Neste captulo, iremos ver como trazer nossos assets (texturas,
modelos 3d, animaes, sons e msicas) de editores externos para
dentro da Unity.

1.
Texturas 2D, audio, modelos 3D, animaes,
materiais e shaders e prefabs.

Voc, provavelmente, vai ouvir falar muito sobre asset
pipeline. Assets so todos os tipos de arquivos de mdia que voc
pode importar para seu jogo. Pipeline (encanamento) o fluxo de
produo ou importao destes assets e qual a melhor forma de
faz-lo.

Unity d suporte a um grande nmero de formatos: texturas
direto do Photoshop (.psd), modelos direto do Blender (.blend),
modelos .fbx exportados 3Dmax/Maya, imagens diversas (jpg,
bmp, png), animaes, udios (wav, mp3, que podem ser testados
dentro do editor), fontes e outros tipos de modelos 3d.

A importao pode ser feita diretamente, apenas arrastando
o asset para a pasta do projeto dentro do Unity, ou atravs do
menu Assets -> Import . A visualizao em tempo real, isto , se
um arquivo for editado fora da Unity, esta atualiza a cena depois de
alguns instantes.
44

Book Unity.indb 44

16/05/2012 19:11:07

I m p o r t a o

c r i a o

d e

a s s e t s


importante saber como estes arquivos so criados fora
da Unity, mas no propsito deste texto mostrar a criao dos
mesmos.

Prefabs

Prefabs podem ser compreendidos como objetos que sero


reutilizados na mesma cena, ou em diversas cenas diferentes, cuja
utilizao traz diversos benefcios. Quando criamos o prefab de uma
pedra, por exemplo, podemos utilizar este mesmo modelo diversas
vezes na cena. E, se por algum motivo for necessrio alterar algum
atributo dessa pedra, como o componente de coliso dela, em vez
de atualizarmos individualmente cada uma das possveis centenas
de pedras na cena, podemos alterar somente o prefab, e este
automaticamente atualiza todas as instncias utilizadas em todas
as cenas.
A utilizao de prefabs no impede que cada instncia do
GameObject possua caractersticas e atributos nicos (posio e
escala, por exemplo). Alm das transformaes, possvel alterar
variveis especficas de componentes do prefab.
Criando: Assets->Create->Prefab.
Definindo: apenas crie um gameobject comum e adicione os
componentes que quiser. Estando pronto, arraste para cima do
prefab.
Usando: agora arraste o prefab para a sua cena. Voc pode
apagar o gameobject original.
No cdigo possvel se instanciar (criar) dinamicamente um
prefab atravs de um comando especfico, assim como possvel
destruir um objeto:
Instantiate(nomePrefab, posicaoPrefab, rotacaoPrefab);
Destroy(nomeGameObject);

45

Book Unity.indb 45

16/05/2012 19:11:07

ANOTAES

Book Unity.indb 46

16/05/2012 19:11:07

U n i t y

3 D

C a p t u l o

I n t e r f a c e

Book Unity.indb 47

16/05/2012 19:11:07

U n i t y

3 D

Captulo 8 - Interface
Na natureza nada se cria, tudo se transforma
- Antoine Lavoisier, qumico francs, 1743 - 1794

Jogo de exemplo mostrado durante as aulas

O que vamos aprender neste captulo:


Neste captulo, iremos ver como podemos criar interfaces
simples para nosso jogo.

1.
GUI,
GUILayout

GUIText,

GUITexture,

GUISKin,

GUI sigla para Graphical User Interface, interface grfica com


o usurio/jogador e tudo o que for usado para mostrar a situao
do jogo, pontos, vidas e informaes diversas.
Para criar interfaces temos diversos componentes de Unity,
como GUIText e GUITexture que utilizaremos aqui em um exemplo
simples.
Veja que existe uma funo especial no cdigo para chamar a
interface: Chama-se OnGUI. Vamos utiliz-la:
48

Book Unity.indb 48

16/05/2012 19:11:07

I n t e r f a c e

Crie, deste modo, um objeto vazio na sua cena apenas para


receber o script de interface:

Lembre sempre de anexar seu script a pelo menos um objeto


em cena.
Veja como vai ficar a interface (simples):

Aqui temos um texto no canto superior esquerdo da tela, um boto


que exibe um texto e ativa algo quando apertado, no caso exibe
uma mensagem no console, a janela de console aberta onde estas
mensagens aparecem (normalmente fica minimizada no canto
inferior esquerdo), a mensagem no console do apertar do boto
junto com uma mensagem de erro automtica (vide cdigo a
seguir), e notamos que podemos pausar o andamento do nosso
jogo e adiantar um pouco por vez usando os botes de play e
pause logo acima. Quanta coisa!

49

Book Unity.indb 49

16/05/2012 19:11:07

U n i t y

3 D

Vamos ao cdigo para isso tudo, no se assustem.


Naquele script de interface, alm do padro que vem com ele,
isto o que deve entrar:

Aqui temos o mtodo OnGUI, que chamado sempre para


mostrar as coisas na tela. Um GUILayout para escrever um texto
(clssico) na tela, a criao de um boto em determinada posio
com certo tamanho ( um retngulo) e um certo texto, que se
apertado escreve um texto no console, dois atributos de textura
para serem usados nestes botes (repare na imagem a seguir que
as texturas public aparecem na interface da Unity e eu preciso
arrastar texturas at l)

50

Book Unity.indb 50

16/05/2012 19:11:08

I n t e r f a c e

Um teste para conferir se essas texturas (uma ao menos) foram


carregadas est na NO exibio de uma mensagem de erro no
console; outro a criao de boto usando uma dessas texturas
que, se apertado, exibe uma mensagem no console de forma
ligeiramente diferente.
Seja voc programador ou no, aqui voc acaba de fazer seu Hello
World em cdigo, seu primeiro cdigo em C# / Unity !
Parabns!

51

Book Unity.indb 51

16/05/2012 19:11:08

ANOTAES

Book Unity.indb 52

16/05/2012 19:11:08

U n i t y

3 D

C a p t u l o

T e r r e n o s

Book Unity.indb 53

16/05/2012 19:11:08

U n i t y

3 D

Captulo 9 - Terrenos
A beleza est nos olhos de quem v
- Ditado popular

Imagem de terreno real Monte Kilimanjaro, na frica para ser modelado durante as aulas

O que vamos aprender neste captulo:



Neste captulo, iremos ver como a Unity pode criar terrenos
de forma fcil e rpida.

1.
Relevo, Textura, rvores, Grama, gua,
Pedras, Plantas, Vento, Sol...
Unity uma ferramenta famosa por produzir belos cenrios
rapidamente. Vamos aqui criar um cenrio de forma muito simples
para ver do que se capaz.
Primeiro criaremos um terreno: v em Terrain -> Create Terrain.

54

Book Unity.indb 54

16/05/2012 19:11:08

T e r r e n o s

Como queremos criar uma montanha, ento vamos selecionar a


primeira ferramenta no script, selecionar um tipo de pincel (Brush)
e clicar com o boto esquerdo do mouse no terreno para elev-lo.
Dica: clicar com a tecla shift pressionada abaixa o terreno.

como se estivssemos mesmo pintando montanhas no


cho.

55

Book Unity.indb 55

16/05/2012 19:11:08

U n i t y

3 D

Com o tempo e pratica voc ganha habilidade.


As duas ferramentas ao lado tambm influenciam na altura do
terreno. Faa seus testes.
J a quarta ferramenta para colocar textura no terreno. Vamos
colocar uma textura de grama e outra de pedra. Selecione a quarta
ferramenta e clique em edit texture.

A seguinte aba aparecer. Escolha texturas as quais voc tenha


importado via assets->import:
56

Book Unity.indb 56

16/05/2012 19:11:08

T e r r e n o s

Para isso no se esquea de clicar no pequeno crculo direita de


Splat, nem de clicar em Add, seno a textura no ser adicionada.
Quando isto acontecer voc vai reparar que ela aparece perto de
seus pincis, assim:

57

Book Unity.indb 57

16/05/2012 19:11:08

U n i t y

3 D

Agora vamos selecionar as pedras e pintar as montanhas


deixando o resto do terreno gramado. Resultado parcial:

E um lago ser criado no meio das montanhas, como voc ver


nas prximas imagens.
Vamos agora quinta ferramenta, para se colocar rvores no
terreno. Clique nela e selecione edit trees.

Assim como voc fez com as texturas, importe um asset de


rvore, sabendo que a Unity j vem com alguns prontos.

58

Book Unity.indb 58

16/05/2012 19:11:08

T e r r e n o s

Espalhe estas palmeiras pelo cenrio, cuidando da quantidade.

Prvia (note o lago):

59

Book Unity.indb 59

16/05/2012 19:11:08

U n i t y

3 D

A mesma coisa pode ser feita com grama ou pedras na sexta


ferramenta. Cuidado! Objetos pequenos assim no aparecem no
editor de cena. Voc pode estar enchendo seu cenrio deles sem
notar!

Veja como ficou a cena com a grama. Para isso necessrio dar
o play na cena:

Mas calma, para chegarmos a este resultado outras coisas


60

Book Unity.indb 60

16/05/2012 19:11:08

T e r r e n o s

foram necessrias. Primeiro no podemos deixar de adicionar luz


ao ambiente. Uma ou mais luzes direcionais, para que tudo fique
convenientemente iluminado, sem saturar.
Tambm foi necessrio configurar minha cmera principal para
esta posio fixa. Logo veremos como mover esta cmera.
A stima e ltima ferramenta serve para editar configuraes
gerais do terreno.
Mas aquele cu ali atrs ainda est muito sem detalhes. Vamos,
pois, acrescentar um skybox. Para isso, vamos s configuraes
de renderizao em Edit -> Render

E em skybox material, vamos importar um asset novo e colocar


ali (existem vrios gratuitos prontos na Unity e na Asset Store veja ltimo captulo desta unidade). Esta configurao depende
tambm da configurao da cmera; mas, por padro, funciona
bem assim como est.
Notem as nuvens ao fundo:

61

Book Unity.indb 61

16/05/2012 19:11:08

U n i t y

3 D

E, por ltimo, vamos anexar um script nossa cmera para


mov-la:
Existem quatro tipos de scripts prontos de cmera. Trs deles
exigem um target, um alvo; mas vamos ficar com o Mouse Look,
o nico que no precisa. Adicione este componente de controle
de cmera sua cmera principal e voc poder olhar ao redor do
terreno criado. Repare no ngulo diferente da imagem:

E para movermos a cmera vamos adicionar nela um script


muito simples:

62

Book Unity.indb 62

16/05/2012 19:11:08

T e r r e n o s

Crie um novo script CameraMovement, adicionando-o sua


cmera e coloque isto escrito em seu Update:

Pronto! J temos uma cmera livre que pode se movimentar por


todo o cenrio, inclusive entrando nele! E lembre-se que no
adicionamos fsica em nada, portanto no h coliso.
Veja um novo ngulo do cenrio, reparando que a posio da
cmera diferente:

63

Book Unity.indb 63

16/05/2012 19:11:08

U n i t y

3 D

Que tal criarmos agora algum corpo andando pelo cenrio? Lembre
de adicionar fsica (gravidade e coliso) a este corpo, de modo que
ele colida com o cho (o terreno j prov collider). E a cmera pode
no ser os olhos desse personagem, mas o seguir de cima a certa
distncia (experimente as outras cmeras e no esquea do alvo).
E este personagem pode ter uma animao de andar e pular. Unity
j prov um personagem de testes assim, pronto. Onde ele estar?
Dica: lembra quando voc abriu a Unity e no importou os packages
gratuitos? Agora a hora de conhecer alguns deles. Experiemente
o Asset -> Import Package -> Character Controller.
Dica: NUNCA se esquea de salvar com freqncia tanto suas
cenas quanto seu projeto como um todo. E no mexa na pasta/
sistema de arquivos, a no ser por dentro do prprio editor, e voc
evitar muitos problemas.

64

Book Unity.indb 64

16/05/2012 19:11:09

ANOTAES

Book Unity.indb 65

16/05/2012 19:11:09

Book Unity.indb 66

16/05/2012 19:11:09

U n i t y

3 D

C a p t u l o

1 0

S o m

Book Unity.indb 67

16/05/2012 19:11:09

U n i t y

3 D

Captulo 10 - Som
A msica est em tudo
-

Victor Hugo, autor

Multido em show de rock

O que vamos aprender neste captulo:


Neste captulo, iremos ver como colocar msicas e efeitos
sonoros nas nossas cenas de jogo.

1.

Audio Source, Audio Clip

Vamos tratar de dois tipos de ocorrncia de sons: aquele som


que toca o tempo todo de fundo, a msica ambiente, e aquele efeito
sonoro que ocorre uma vez e acaba (um som de tiro, por exemplo).
Comeando pela msica de fundo da cena, vamos fazer da
seguinte maneira: adicione um componente de Audio Source (fonte
de udio) sua cena, pois, havendo som, algum game object deve
ser responsvel por toc-lo. Coloque em um game object separado,
ou use algum outro que voc considere disponvel e bom para isso.

68

Book Unity.indb 68

16/05/2012 19:11:09

S o m

Aqui importante reparar que ele pede o Audio Clip. Este deve
ser um arquivo de som (mp3, ogg, wav) que tenha sido importado
para seu projeto. Consulte o captulo anterior de importao de
assets. Feito isto, arraste-o para ali. Outros detalhes importantes
so o volume e a marcao de Play On Awake. Awake um
mtodo chamado por todo objeto assim que colocado, acorda,
em cena ( como se fosse um construtor para os programadores).
Deixe marcado o Play On Awake. Deixe marcado tambm o Loop.
Pronto! Sua msica toca assim que inicia a cena e fica tocando
repetidamente.
Vamos agora ao efeito sonoro.
Faremos via cdigo: no script da interface que fizemos
antes (lembram, do OnGUI?), criaremos um atributo pblico do
tipo AudioClip chamado SoundEffect1. E, no mtodo Update,
colocaremos uma chamada para, ao se apertar a barra de espao
do teclado, este efeito sonoro seja tocado uma vez. Vamos l?
Digite o seguinte no Interface.cs ( o mtodo Update j estar l):

69

Book Unity.indb 69

16/05/2012 19:11:09

U n i t y

3 D

Fcil, no? PlayOneShot = toque uma vez e pare.


Agora, ajeite o editor de modo a colocar um efeito sonoro
qualquer associado ao script deste objeto. Assim:

70

Book Unity.indb 70

16/05/2012 19:11:09

S o m

Feito! Agora voc comea com uma msica tocando e quando


aperta a barra de espao (poderia ser um soco, um alarme...) emite
um som.
Voc pode ter vrios efeitos sonoros ao mesmo tempo, mas,
por motivos bvios, deixe tocando apenas uma msica de fundo.

71

Book Unity.indb 71

16/05/2012 19:11:09

ANOTAES

Book Unity.indb 72

16/05/2012 19:11:09

U n i t y

3 D

C a p t u l o
C r i a o

Book Unity.indb 73

d e

1 1

m a t e r i a i s

s h a d e r s

16/05/2012 19:11:09

U n i t y

3 D

Captulo 11 - Criao de materiais e shaders


Time is the fire in which we burn!
- Dr. Tolian Soran, Star Trek Generations

Jogo de exemplo mostrado durante as aulas

O que vamos aprender neste captulo:


Neste captulo, iremos conhecer como aplicar texturas aos
nossos objetos em cena.

1.

Tipos de materiais - introduo.

O que so? Responsveis por definir as caractersticas visuais


de um objeto.
Material um recipiente onde diversos componentes so
integrados, como texturas.
Shader um cdigo presente nos materiais e responsvel por
diversas informaes importantes, como a reao de um objeto
luz, deformaes 3D na malha visualizada e at a quantidade de
texturas que podem ser aplicadas.
O vnculo entre um shader e um modelo 3d se d atravs de um
material (lembrando: material um continer para as propriedades
visuais dos objetos em cena).
74

Book Unity.indb 74

16/05/2012 19:11:09

C r i a o

d e

m a t e r i a i s

s h a d e r s

A especificao de um shader define as propriedades que


este necessita para exibir um objeto (canal diffuse e specular,
por exemplo), enquanto o material define os valores para tais
propriedades.
Exemplificando, podemos imaginar um shader para exibir o
brilho metlico de um automvel, aplicado em dois deles. Ambos
tero brilho metlico. Mas um, tendo um material vermelho, ter
um brilho metlico vermelho; e o outro, tendo um material azul, ter
um brilho metlico azul.
Deformamaisespecfica, umshaderdefine:
O mtodo de renderizao de um objeto, incluindo o
uso de diversas variaes, dependendo do dispositivo grfico
do usurio;
Todos os vertex e pixel-shaders usados na renderizao;
As propriedades que sero atribuveis nas especificaes de
materiais;
Parmetros numricos ou de cor que tambm sero
atribuveis nos materiais.
Um material define:
Quais texturas usar para a renderizao;
Quais cores usar;
Os valores de quaisquer outros assets.
Para criar um material: Assets->Create->Material. Para apliclo a um objeto, basta arrast-lo at o objeto. Muda-se o material
na sua aba de inspector.

75

Book Unity.indb 75

16/05/2012 19:11:09

U n i t y

3 D

Repare nosso material com uma textura de tijolos e uma luz


vermelha aplicadas em nosso cho de exemplos anteriores.
Para a criao de shaders existe a linguagem ShaderLab (semelhante
a DX), bastante complexa e fora do escopo no momento.

76

Book Unity.indb 76

16/05/2012 19:11:09

ANOTAES

Book Unity.indb 77

16/05/2012 19:11:09

Book Unity.indb 78

16/05/2012 19:11:09

U n i t y

3 D

C a p t u l o
S c r i p t i n g

Book Unity.indb 79

1 2

A s s e t

S t o r e

16/05/2012 19:11:09

U n i t y

3 D

Captulo 12 - Scripting e Asset Store


Corra, Forest, corra!
- Forest Gump

Jogo de exemplo mostrado durante as aulas

O que vamos aprender neste captulo:


Neste captulo, iremos ver algumas dicas finais de uso de
recursos da Unity.

1.

Outras dicas

Comeando pela Asset Store, que um local onde os usurios


podem obter diversos recursos para seus jogos, sejam estes
modelos, texturas, ou at tutoriais, todos gratuitos, vale a pena
conferir.

80

Book Unity.indb 80

16/05/2012 19:11:09

S c r i p t i n g

A s s e t

S t o r e

Scripting
OsistemadescriptingdaUnity3Dabrangenteeflexvel,
oquepermite um fcildesenvolvimentode jogos bastante
completos e interessantes. Internamente os scripts so
executados atravs de uma verso modificada da biblioteca
Mono,uma implementao decdigo aberto para o sistema
.Net.
Esta biblioteca permite que os scripts sejam implementados
em qualquer uma de trs linguagens, escolha do programador:
javascript, C# ou Boo, esta ltima criada por um bgrasileiro. E no
existem desvantagens por se escolher uma ou outra, ficando a
escolha apenas por conta da familiaridade do programador.
A documentao oficial tem exemplos nas 3 linguagens. E
possvel, inclusive, combinar diferentes linguagens em um mesmo
projeto (claro, dentro de um mesmo arquivo, somente uma delas
permitida).
Scripts so anexados como componentes em objetos. Ento
importante projet-los de forma independente, para ganhar
flexibilidade e reuso.
Criando scripts:
Basta ir em Assets -> Create -> Script, ou pelo menu de create
da janela de projeto (tambm acessvel pelo boto direito do mouse
neste).
Editando scripts
Basta clicar duas vezes sobre o script e o editor definido nas
preferncias abrir: Edit -> Preferences

81

Book Unity.indb 81

16/05/2012 19:11:09

U n i t y

3 D

O padro o MonoDevelop. O Microsoft Visual Studio s pode


ser escolhido em sua verso PRO; mas, caso haja a verso Express,
ainda assim possvel abrir manualmente os arquivos na pasta
do projeto Unity com ele. Voc perde apenas a funcionalidade de
chamar o Visual Studio de dentro do editor da Unity.
J vimos um pouco sobre cdigos no captulo sobre interface.
Porm, como no o objetivo do presente texto aprofundar-se no
assunto, isto ser visto em sala de aula, conforme a turma. Cabe
ressaltar, contudo, que nos cdigos temos acesso automtico a
alguns componentes como:
transform -> posicionamento, rotao e escala (todos GO tem);
rigidbody -> corpo rgido para o sistema de fsica;
renderer -> componente encarregado da exibio do objeto;
collider -> geometria de coliso para fsica ou trigger.
Alm destes, temos muito componentes pr-existentes, assim
como scripts criados especificamente para cada jogo, aos quais
podemos obter acesso.
atravs da programao que as belas imagens criadas criam
vida, interagem com o jogador e criam a diverso. Se aprofunde no
conhecimento dos cdigos. Vale a pena!

82

Book Unity.indb 82

16/05/2012 19:11:09

S c r i p t i n g

A s s e t

S t o r e

Outras dicas:
Apenas comeamos a conhecer a ferramenta Unity. Muitos
jogos foram criados com ela, e ela foi criada especificamente
para criar jogos! Pesquise a respeito dos jogos de sucesso, inove,
domine a ferramenta, explore, fuce, faa demos! Tem muita coisa
escondida pelos menus de Help, Window, Edit ento nem se fala,
temos Preferences (preferncias gerais), Project e Render Settings
(configuraes de projeto e exibio da imagem), rede... e para
otimizar isso tudo e rodar com suavidade em um Android sem
ocupar muita memria, por exemplo
Bons estudos.

83

Book Unity.indb 83

16/05/2012 19:11:09

ANOTAES

Book Unity.indb 84

16/05/2012 19:11:09

U n i t y

3 D

C a p t u l o
P r o j e t o

Book Unity.indb 85

d e j o g o
a r t e e

1 3

c o m p l e t o , e n v o l v e n d o
p r o g r a m a o

16/05/2012 19:11:09

U n i t y

3 D

Captulo 13 - Projeto de jogo completo,


envolvendo arte e programao
Agora a coisa ficou realmente muito sria mesmo!
- Meme

AngryBots Jogo de Exemplo da Unity 3D

O que vamos aprender neste captulo:


Neste captulo, iremos revisar alguns conceitos vistos ao longo
de todo o curso e como integr-los em um projeto nico de jogo.

1.

Diversos assuntos

Bem, estamos chegando ao final da apostila, e provavelmente


tambm ao final do mdulo de Unity 3D. Aprendemos muito at
aqui e hora de juntar todas as informaes aprendidas em um
nico projeto.
Converse com seu professor. Vocs juntos decidiro que jogo
fazer, pensando sempre no trabalho em equipe. Chame alguns
colegas da sua turma ou de outra para ajudar, cada um com uma
tarefa. Na verdade, assim so feitos os jogos.
Neste projeto DEVE haver um GDD, um Game Design Document,
um planejamento. Foi um de seus primeiros mdulos, lembra?
Certamente durante os mdulos anteriores voc deve ter feito
um fluxo de telas, com tela de introduo, explicando talvez a
histria do jogo, um menu inicial com os crditos. Afinal voc quer
que todos saibam que foi voc que fez o jogo, sem esquecer de
entrar em pausa, vai que o telefone toca, e colocar as telas finais
86

Book Unity.indb 86

16/05/2012 19:11:09

P r o j e t o

d e j o g o
a r t e e

c o m p l e t o , e n v o l v e n d o
p r o g r a m a o

de game over e the end. Vimos como fazer isso em Unity mudando
as cenas. (Application.LoadLevel(nomeLevel);)
E a interface? Sabia que possvel criar em Unity com cmera
ortogrfica? Faa isso!
Lembra que mesmo estando no curso de programao voc
fez um mdulo de arte 3D bsica? Ento? Agora a hora de usar
este conhecimento! Que tal pensarmos em um jogo simples, com
formas 3D fceis?
Aproveitando, ser que no hora de pensar em fazer o mdulo
de arte tambm, se voc puder? Mesmo sendo um programador,
o conhecimento de outras reas vai te auxiliar. O mesmo vale se
voc for um artista! Voc no viu programao aqui? O que achou?
Nada to complicado, espero!

87

Book Unity.indb 87

16/05/2012 19:11:10

ANOTAES

Book Unity.indb 88

16/05/2012 19:11:10

Anexo A: Cdigos da apostila

Todos os cdigos porventura desenvolvidos para esta apostila


esto disponveis online, no seguinte endereo:

http://seven-unity3d-apostila-codigos.googlecode.com/svn/
trunk

Instrues para acesso:

No Windows, baixar o programa TortoiseSVN na verso correta


do seu sistema operacional e instalar:

http://tortoisesvn.net/downloads.html

Aps isso clicar com o boto direito do mouse em qualquer


pasta ou na rea de trabalho e pedir SVN Checkout, colocar o
endereo acima e dar OK, pronto.

89

Book Unity.indb 89

16/05/2012 19:11:10

Anexo B: Diagramas de classes

Seguem alguns diagramas de classes de componentes da Unity:

90

Book Unity.indb 90

16/05/2012 19:11:10

Behaviour

91

Book Unity.indb 91

16/05/2012 19:11:10

Component

Renderer
92

Book Unity.indb 92

16/05/2012 19:11:10

Camera

93

Book Unity.indb 93

16/05/2012 19:11:10

Transform

94

Book Unity.indb 94

16/05/2012 19:11:10

GameObject

Referncias
Desenvolvendo Games com Unity 3D, HIRATA, A., Ed. Cincia
Moderna, 2011
Criando Arte de Jogos 3D para Iphone com Unity 3D,
McDERMOTT, W., Ed. Campus, 2011

95

Book Unity.indb 95

16/05/2012 19:11:10

Direitos autorais
Todos os termos e imagens mencionados e reconhecidos como
marca registrada ou comercial so de responsabilidade de
seus proprietrios. No h nenhuma associao com produto
ou fornecedor apresentado no texto. No decorrer deste texto,
termos e imagens utilizados so, apenas e exclusivamente, de
uso ilustrativo e/ou educativo, sem inteno de infringir as regras
de sua utilizao, permanecendo os direitos reservados seus
respectivos criadores.
Nenhuma parte deste texto poder ser reproduzida ou
transmitida, sejam quais forem os meios empregados, sem
autorizao prvia, por escrito, do Grupo Seven.
Todo o esforo foi feito para fornecer a mais adequada
informao, livre de erros tcnicos ou de contedo. Ressalve-se,
contudo, que no nos responsabilizamos pelo eventual uso e
resultado da informao fornecida.
Este texto fornecido como est, sem garantia de qualquer tipo,
expressa ou implcita.

96

Book Unity.indb 96

16/05/2012 19:11:10

Você também pode gostar