Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila Unity 3 DV 033
Apostila Unity 3 DV 033
Uma introduo
Unity3D
Uma introduo
Voc pode:
Contedo
Lista de Imagens ............................................................................................................... 3
Lista de cdigos ................................................................................................................ 3
1 Introduo ...................................................................................................................... 3
1.1 O que o Unity 3D ................................................................................................. 3
1.2 Unity3D no Brasil ................................................................................................... 4
1.3 Exemplos de jogos .................................................................................................. 5
1.4 Um aviso ................................................................................................................. 7
1.5 Programas auxiliares............................................................................................... 7
1.6 Instalando o Unity no Windows ............................................................................. 8
2 Principais conceitos ..................................................................................................... 17
2.1 O ambiente do Unity3D........................................................................................ 17
2.1.1 Viso de Projeto ......................................................................................... 18
2.1.2 Hierarquia .................................................................................................... 19
2.1.3 Menu de Topo ............................................................................................ 20
2.1.4 Viso da Cena ............................................................................................ 21
2.1.5 Posicionamento de objetos ...................................................................... 21
2.1.6 Scene Gizmo .............................................................................................. 22
2.1.7 Barra de controle da cena ........................................................................ 23
2.1.8 Viso de jogo .............................................................................................. 23
2.1.9 Play Mode ................................................................................................... 24
2.1.10 Barra de controle da viso de jogo ....................................................... 24
2.1.11 Inspetor ..................................................................................................... 25
2.1.12 Barra de Status ........................................................................................ 27
2.1.13 Console ..................................................................................................... 27
2.2. Sistema de coordenadas 3D ................................................................................. 28
2.2.1. O plano cartesiano ........................................................................................ 28
2.2.2. Coordenadas locais e globais ........................................................................ 29
2.2.3. Vetores .......................................................................................................... 30
2.2.4. Quaternies e rotaes .................................................................................. 31
2.2.5. Renderizao ................................................................................................ 31
2.2.6. Cmeras ........................................................................................................ 31
2.2.7. Representao de formas .............................................................................. 32
2.2.8. Materiais ....................................................................................................... 32
2.3. Fsica.................................................................................................................... 32
2.3.1. Corpos rgidos .............................................................................................. 32
2.3.2. Deteco de coliso ...................................................................................... 33
2.3 Concluso ............................................................................................................. 33
3 Introduo ao Java Script ............................................................................................ 34
3.1 Seu primeiro programa ......................................................................................... 34
3.2 Variveis e tipos de dados .................................................................................... 39
3.3 Declarao de variveis e palavras reservadas ..................................................... 42
3.4 Operadores ............................................................................................................ 43
3.5 Comandos condicionais ........................................................................................ 46
3.6 Objetos, propriedades e mtodos .......................................................................... 50
3.7 Comentrios .......................................................................................................... 52
3.8 Isso no tudo ...................................................................................................... 53
4 Terrenos ....................................................................................................................... 54
1
Lista de Imagens
Imagem 1 - Super Vlei Brasil (Aquiris) ..................................................................... 4
Imagem 2 - Rally Touareg (Edgy) ............................................................................... 5
Imagem 3 - Rexona Race............................................................................................. 5
Imagem 4 - Fusion Fall ( Web MMORPG ) ............................................................... 6
Imagem 5 - JumpStart para Nintendo Wii.................................................................. 6
Imagem 6 - Zombieville (iPhone) ................................................................................ 7
Imagem 7 - Tela inicial do Unity ................................................................................ 18
Imagem 8 - Menu de Topo ......................................................................................... 20
Imagem 9 - Viso da Cena......................................................................................... 21
Imagem 10 - Viso de jogo ........................................................................................ 23
Imagem 11 - Estatstica do jogo ................................................................................ 24
Imagem 12 - Console .................................................................................................. 28
Lista de cdigos
Cdigo 1 - Script inicial ............................................................................................... 37
Cdigo 2 Exemplo Ola ............................................................................................. 37
Cdigo 3 Exemplo gira cubo................................................................................... 39
Cdigo 4 Exemplo declarao de varivel ........................................................... 40
Cdigo 5 Exemplo string ......................................................................................... 41
Cdigo 6 Exemplo if ................................................................................................. 46
Cdigo 7 Exemplo else ............................................................................................ 48
Cdigo 8 Exemplo while .......................................................................................... 49
Cdigo 9 Exemplo for .............................................................................................. 49
Cdigo 10 Exemplo break ....................................................................................... 50
Cdigo 11 Exemplo break ....................................................................................... 50
Cdigo 12 Exemplo break ....................................................................................... 52
Cdigo 13 Exemplo break ....................................................................................... 52
Captulo 1: Introduo
Captulo
1
1 Introduo
Captulo 1: Introduo
Esse
plugin
um
programa
que
encontrado
no
link
http://unity3d.com/webplayer/ e funciona parecido com o plugin do Flash, ou
seja, voc consegue jogar atravs do seu navegador, Internet Explorer, Firefox,
entre outros.
Captulo 1: Introduo
Captulo 1: Introduo
Um deles o MMORPG mais conhecido desenvolvido com o Unity3D o
Fusion Fall, http://www.fusionfall.com, da Cartoon Network, ele um jogo para
web com visual de desenho animado, imagem 4. Para desenvolver esse tipo de
jogo necessrio utilizar a licena profissional, a qual no gratuita, mas aqui
serve como exemplo de um jogo grande, para centenas de jogadores. Para
jogos com poucos jogadores, cerca de 12, a verso gratuita suficiente.
Captulo 1: Introduo
1.4 Um aviso
Os jogos apresentados neste captulo foram desenvolvidos por profissionais
que trabalham neles durante muito tempo e j possuem uma grande
experincia na rea de desenvolvimento de jogos. Quando voc comear a
desenvolver, no fique frustrado se seu jogo no parecer to bom ou no
conseguir criar uma funcionalidade parecida com as dos jogos citados, com o
tempo voc aprender a desenvolver jogos cada vez melhores e quem sabe
um dia faa parte do time de desenvolvimento de um grande jogo.
Outra a coisa a ser lembrada que a verso gratuita da engine no permite o
desenvolvimento de jogos para iPhone ou para o Nintendo Wii, apenas para
Windows, MAC e para internet, mas nada impede de voc comprar uma licena
para desenvolver para essas plataformas aps voc desenvolver um jogo de
sucesso para Windows, por exemplo, e comprar essas licenas com o dinheiro
obtido para ganhar mais dinheiro. Mas isso no um problema para aqueles
que desejam apenas desenvolver para Windows e tem o desenvolvimento de
jogos apenas como um hobby.
Captulo 1: Introduo
Clique em Next.
Captulo 1: Introduo
Captulo 1: Introduo
Clique em Next.
10
Captulo 1: Introduo
11
Captulo 1: Introduo
Aguarde a instalao finalizar.
12
Captulo 1: Introduo
Clique em Register.
13
Captulo 1: Introduo
Captulo 1: Introduo
Pronto! Agora voc poder utilizar a verso gratuita do Unity por tempo
indeterminado, porm a verso pro por apenas 30 dias.
15
Captulo 1: Introduo
16
Captulo
2
2 Principais conceitos
17
Hierarquia
Inspetor
Cena / Jogo
Projeto
2.1.2 Hierarquia
A viso da hierarquia da cena mostra todos os
elementos
presentes
na
cena,
cada
GameObject. Alguns desses objetos so
instncia diretas de Assets,m tais como
modelos do Blender, outros so Prefabs, ou
seja, objetos personalizados, uma mistura de
modelos com scripts e outras coisas, que iro
compor boa parte dos jogos do Unity.
Voc pode clicar e arrastar objetos para
mudar a hierarquia deles, ou seja, organizlos como se fossem pastas, objetos que esto
dentro de outro objetos so filhos deste
objeto, o objeto que contm esses filhos
chamado de pai. Um objeto filho herdar o
movimento, rotao e escala de seu pai.
Essa informao muito importante, pois
voc dever ficar atento a este fato quando comear a programar seu jogo.
19
mostra.
utilizado
mostrados
20
A viso da cena o lugar onde voc pode organizar a disposio dos objetos
na cena do jogo. Voc pode selecionar e mudar de posio os jogadores, a
cmera, os inimigos e todos os outros GameObjects, alm de poder mudar a
escala deles, ou seja, o tamanho desses objetos. Esse editor de cena uma
das ferramentas mais importantes do Unity, ento voc deve aprender a mexer
com ele. Para selecionar um objeto basta clicar nele na viso de cena ou na
viso de hierarquia, para focar o objeto basta apertar a tecla f na viso de
cena.
selecionar
algum
objeto
voc
pode
utilizar
Transform
Tools,
21
Viso em perspectiva.
23
Use estes botes par controlar a viso de jogo. Aperte o play para iniciar o
jogo, se apertar play novamente o jogo encerrado, para pausar o jogo aperte
pause.
24
2.1.11 Inspetor
Jogos feitos no Unity so compostos de
muitos
GameObjects
que
contm
modelos, scripts, som, ou outros
elementos grficos, tais como luz. O
inspetor mostra detalhadamente as
informaes
sobre
o
GameObject
selecionado,
incluindo
todos
os
componentes pertencentes a este objeto.
Nessa viso voc pode modificar os
valores
das
propriedades
desses
componentes que o GameObject possui.
Toda propriedade mostrada no inspetor
pode ser modificada. At variveis de
scripts podem ser modificadas sem
modificar o script original. Voc pode
mudar essas propriedades enquanto o
jogo est rodando para experimentar e
encontrar os valores ideais para essas
propriedades para seu jogo. Esta uma
funcionalidade muito importante, pois na
maioria dos casos de desenvolvimento de
jogo no possvel modificar valores de
variveis enquanto o jogo est em
execuo.
25
26
2.1.13 Console
Se voc der um clique duplo na barra de status ou escolhendo Barra de
Ferramentas->Window->Console, aparecer o Console.
27
Imagem 12 - Console
28
O plano cartesiano 2D
2.2.3. Vetores
Vetores so segmentos de reta usados para representar direo (reta suporte do
segmento orientado), intensidade (valor numrico) e sentido (orientao do segmento de
reta) no plano cartesiano. A figura 4 mostra a diferena entre ponto e vetor. Vetores,
assim como pontos, no se limitam as duas dimenses e podem ser representados no
espao 3D. Atravs do uso de vetores possvel atribuir representar alm da posio de
um objeto no espao, a sua direo.
30
2.2.5. Renderizao
Renderizao o ato de criar imagens 2D dada uma descrio geomtrica de um mundo
tridimensional e uma cmera virtual que especifica a perspectiva que o mundo est
sendo visto.
2.2.6. Cmeras
Cmeras em jogos servem para representar o comportamento dos olhos em um sistema
em trs dimenses. Atravs dela so determinados quais objetos devem aparecer na tela
e como eles devem ser mostrados. Elas podem ser posicionadas em qualquer lugar no
espao, possuem uma direo e um campo de viso, ou Field of Vision (FoV). Esse
campo de viso pode ser interpretado como uma pirmide invertida com origem no
ponto de origem da cmera e com direo determinada pela direo da cmera, assim,
os pontos mostrados na tela so os que esto dentro dessa pirmide.
Quando limitamos a distncia do campo de viso, estamos especificando uma distncia
mxima que um objeto deve estar do ponto de origem da cmera para que ele seja
mostrado na tela, desde que ele esteja dentro do campo de viso da cmera. Tambm
possvel especificar uma distncia mnima que os objetos devero estar da cmera para
que eles sejam mostrados na tela.
As figuras 5 e 6 ilustram o funcionamento de uma cmera, tudo o que est dentro do
espao delimitado pelo near plane e pelo far plane sero renderizados.
31
A cmera
2.2.8. Materiais
Materiais servem para definir a aparncia de um modelo aps renderizados. Materiais
so cores ou texturas, que em conjunto com um script de renderizao, conhecido como
shader, determina a aparncia de um objeto quando visualizado na tela.
2.3. Fsica
Nesta seo sero descritos o que so corpos rgidos e deteco de coliso.
2.3 Concluso
Com as informaes deste captulo espera-se que o leitor se familiarize com a
interface do Unity e com algumas palavras e conceitos envolvendo
programao de jogos 3D.
Espera-se que o leitor teste o projeto de demonstrao do Unity, ou seja, mude
a posio dos objetos, rode o jogo, mude as variveis de alguns GameObjects
enquanto o jogo est rodando e perceba os resultados das mudanas, ou seja,
fuce bastante mesmo no Unity at se sentir a vontade com a interface. Tenta
entender o que cada viso representa e como funciona o mouse naquela viso
e o que seus botes fazem.
No prximo captulo farei uma introduo a programao de jogos com o Unity
e o leitor criar seu primeiro programa.
33
Captulo
3
3 Introduo ao Java Script
O Unity permite aos desenvolvedores escolher entre trs tipos de linguagem de
programao diferentes: Java Script, C# e Boo. Dentre estas, por ser a mais
simples, esta apostila adotou a linguagem Java Script para criar os cdigos
responsveis por controlar o funcionamento do jogo.
A partir deste ponto, assume-se que o leitor est familiarizado com a interface
do Unity.
34
Salve a cena, ctrl+s, escolhe um nome para ela, por exemplo, level1.
Crie um Cubo, Barra de Ferramentas->GameObject->Create Other>Cube.
Com o Cubo Selecionado aperte f na viso de cena.
Selecione a cmera na viso de hierarquia e v em Barra de
Ferramentas->GameObject->Move To View.
Voc ter uma cena mais ou menos assim:
35
Quando voc apertar o play no ver apenas uma tela azul, ver um quadrado
preto no centro da tela. Isso significa que voc j aprendeu o bsico da
interface do Unity, agora estamos pronto para comear a aprender um pouco
de Java Script.
Na viso de projeto clique em Create->Java Script. Mude o nome do script,
selecionando-o e apertando F2, para Ola. D um duplo clique no script na
viso de projetos. Um editor de script ser aberto e ter o seguinte contedo:
36
function Update () {
}
function Update () {
print("Ola");
}
37
38
function Update () {
transform.Rotate(0, 5*Time.deltaTime, 0);
}
Aperte play e perceba que o cubo comea a girar ao redor do eixo y! Ou seja, a
funo transform.Rotate(0, 5*Time.deltaTime, 0) fez com que ao invs do
programa mostrar um texto na barra de status, faz o cubo girar. Agora hora
de entender como funciona a linguagem de programao Java Script, que ser
responsvel por controlar todos os elementos dos jogos feitos com o Unity.
=>
y=5+1
=>
y = 6;
var x = 5;
function Update () {
var y = x+1;
print(y);
}
Aperte play e veja que o a funo print exibe na barra de status o valor da
mensagem, ou seja, Minha primeira string.
Como voc pode perceber, a funo print serve para testar o programa, ela
poder mostrar o valor de qualquer varivel que voc declarar. A seguir
veremos os tipos de variveis que o Java Script possui, se quiser testar cada
tipo, basta alterar o cdigo para que a funo print imprima o valor de sua
varivel, por exemplo, voc pode usar print(n), onde n seria o nome da
varivel do tipo nmero, voc especificar outro nome para sua varivel, mas
lembre-se de corrigir a funo print.
O Java Script possui os seguintes tipos primitivos:
Tipo
sbyte
short
int
long
byte
Descrio
Inteiro de 8-bit com sinal.
Inteiro de 16-bit com sinal.
Inteiro de 32-bit com sinal.
Inteiro de 64-bit com sinal.
Inteiro de 8-bit sem sinal.
41
Exemplo
var n : sbyte = -2;
var n : short = -2;
var n : int = 2;
var n : long = 2;
var n : byte = 2;
String
var n : ushort = 2;
var n : uint = 2;
var n : ulong = 2;
var f : float = 2.0;
var f : double =
2.0;
var b : boolean =
true;
var c : char =
"c"[0];
var s : String =
"Hello, world";
Cada um deles serve para uma coisa. Voc no precisa especificar o tipo de
sua varivel, geralmente voc s vai especificar quando voc deseja restringir
certas operaes para trabalham com um determinado tipo ou usar uma funo
que trabalhar com uma caracterstica que apenas aquele tipo possui, por
exemplo se voc quer usar nmeros inteiros em sua conta, voc dever usar o
tipo int ou algum outro que represente apenas nmero inteiros, como o short
que para inteiros pequenos.
Alm dos tipos primitivos definidos na prpria linguagem do Java Script,
existem os tipos complexos, os quais fazem parte do Unity e voc pode criar
seu prprio tipo de dado, o que chamamos de classes.
Um dos tipos complexos que voc utilizar muito o tipo Array, que representa
um conjunto de variveis. Como nas matrizes e vetores das aulas de
matemtica.
42
as
boolean
break
byte
case
char
class
continue
default
double
else
enum
false
float
for
if
in
int
long
new
null
private
protected
public
return
sbyte
static
string
super
switch
this
true
typeof
uint
ulong
ushort
virtual
void
while
3.4 Operadores
Variveis podem ser utilizadas para realizar operaes, para isso existem os
operadores, os quais j vimos a alguns deles nas aulas de matemtica e isso
facilita saber para que servem, um exemplo o operador + que realiza adio:
var x = 2 + 4;
Nesse caso o operador + far uma soma de 2 com 4, o que resulta em 6, e
esse ser o valor de x. Tambm poderamos fazer:
var n1 = 2;
var n2 = 4;
var x = n1 + n2;
43
O operador mais tambm tem uma funo especial com variveis do tipo string,
ele permite juntar duas strings em uma s:
var palavra = Bom + dia
Faz com que a varivel palavra tenha o valor de Bom dia. Tambm podemos
fazer:
var p1 = Bom ;
var p2 = dia;
var palavra = p1 + p2;
A tabela a seguir contm os operadores existentes em Java Script e suas
aplicaes:
Operador Funo
+
Concatena strings.
+
-
*
/
%
++
--
Exemplo
var palavra = Bom +
dia;
var total = 5 + 6;
var total = 11 3;
Resultado
Bom dia
10
var total = 9 / 2;
4.5
var total = 9 % 2;
var total = 2;
total++;
var total = 2;
total--;
11
8
Funo
Menor que.
Maior que.
Igual.
Exemplo
4 < 5;
4 > 5;
4 == 5;
44
Resultado
true
false
false
Menor ou igual.
Maior ou igual.
Diferente.
4 <= 5;
4 >= 5;
4 != 5
true
false
true
4 < 5 && 4 != 5
Resultado
falso, pois se uma das expresses for falsa, o resultado
ser falso, como 4 > 5 falso, ento essa expresso
retornaria false.
verdadeiro, pois 4 menor que 5 e 4 diferente de 5.
4 > 5 || 4 == 5
Resultado
verdadeiro, pois se uma das expresses for verdadeira,
o resultado ser verdadeiro, e como 4 < 5 verdadeiro,
essa expresso retornaria true.
falso pois as duas expresses so falsas.
Exemplo
var total = 6;
Resultado
Bom dia
var total = 6;
total +=6
11
var total = 2;
total *= 5;
10
var total = 9;
total /= 2;
4.5
var total = 9;
total %= 2;
45
var x = 5;
function Update () {
if ( x==5 ){
print(Verdade);
}
}
Cdigo 6 Exemplo if
}
Tambm possvel condicionar apenas uma ao a uma condio seno,
como no if:
if (condio) Ao;
else Ao2;
Exemplo
var x = 5;
function Update () {
if ( x>100 ){
print(Verdade);
47
Ao1;
Ao2;
....
AoN;
Exemplo
var x = 0;
function Update () {
while ( x<100 ){
print(x vale +x);
x++;
}
}
48
function Update () {
for (var x=0; x < 100; x++ ){
print(x vale +x);
}
}
function Update () {
for (var x=0; x < 100; x++ ){
print(x);
49
var x:float = 0;
function Update () {
x = Time.deltaTime;
print(x);
}
51
function Update () {
multiplica(10,20);
}
Voc tambm pode utilizar funes para atribuir valores a variveis, para isso
voc deve especificar que tipo de dado a funo retorna e especificar dentro
dela o valor retornado com um comando return, repare nas mudanas do
cdigo 12 para o cdigo 13:
function Update () {
var x = multiplica(6,7);
print(x);
}
Cdigo 13 Exemplo break
3.7 Comentrios
Existe duas formas de inserir comentrios em seu cdigo no Java Script, o
comentrio de uma nica linha que precedido por //, exemplo:
52
53
Captulo 4: Terrenos
Captulo
4
4 Terrenos
Uma das vantagens de se utilizar um motor de jogo a possibilidade de
realizar vrios trabalhos com ferramentas grficas, podendo visualizar o que
est fazendo. O editor de level do Unity possui uma ferramenta para edio de
terrenos que permite aos desenvolvedores paisagens ricas em detalhes de um
modo simples e rpido comparado com o uso de modeladores 3d, tais como
Blender e 3D Studio Max, para a realizao dessa tarefa.
Esse captulo uma traduo da documentao do Unity da parte que explica
o processo de criao de terrenos.
54
Captulo 4: Terrenos
Captulo 4: Terrenos
56