Você está na página 1de 59

Unity3D

Uma introduo

Autor: Thiago Campos Viana

Unity3D
Uma introduo

Copyright 2009 Thiago Campos Viana


So Carlos, SP Brasil
thiagocamposviana@gmail.com

Creative Commons Attribution 3.0 Unported

Voc pode:

copiar, distribuir, exibir e executar a obra.


criar obras derivadas.

Sob as seguintes condies


Atribuio Voc deve dar crdito ao autor original, da forma especificada
pelo autor ou licenciante.
Compartilhamento pela mesma Licena Se voc alterar, transformar ou
criar algo em cima deste trabalho, voc deve distribuir o trabalho resultante
somente com uma licena igual, similar ou com compatvel com esta.
Para maiores informaes acesse:
http://creativecommons.org/licenses/by-sa/3.0/legalcode

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

4.1 Utilizando Terrenos .............................................................................................. 54


4.1.1 Criando um novo Terreno......................................................................... 54
4.1.2 Navegando pelo terreno ..................................................................................... 56
4.1.3 Editando o Terreno ............................................................................................ 56

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

em vindo rea de desenvolvimento de jogos de jogos com o Unity3D!


Em primeiro lugar gostaria de me apresentar, meu nome Thiago
Campos Viana (thiagocamposviana@gmail.com) e deixar claro que esta
apostila foi criada de um hobbista para hobbistas. No sou um desenvolvedor
de jogos profissional, tenho mais experincia com desenvolvimento web, mais
especificamente com o CMS eZ publish, porm adoro a rea de jogos e
gostaria de compartilhar o pouco que sei sobre esta ferramenta de
desenvolvimento que possui uma verso gratuita, a Unity3D, e como no se
encontra apostilas em portugus sobre esta ferramenta, resolvi criar esta
apostila.
A apostila tem como pblico alvo todas as pessoas interessadas em
desenvolvimento de jogos 3D sem muita experincia com programao ou
com o Unity3D, assim, ao final da apostila espera-se que voc esteja
preparado para iniciar seu primeiro projeto de um jogo 3D. Tentarei evitar ao
mximo termos muitos tcnicos, pois gostaria de ver adolescentes de todas as
classes econmicas criando jogos nessa ferramenta assim como eles criam
vdeos para o site youtube.com com o Windows Movie Maker, pois quando eu
comecei a usar a internet em 2002, antes de comear o curso de bacharelado
em informtica na USP de So Carlos eu era um desses adolescentes. Apesar
de tudo, ser necessrio para quem deseja se aventurar na rea de
desenvolvimento um conhecimento mnimo de ingls.
Ento, sem mais delongas, vamos comear a falar de desenvolvimento de
jogos com o Unity3D.

1.1 O que o Unity 3D


O Unity3D um programa de desenvolvimento com todos os recursos
necessrios para desenvolver qualquer tipo de jogo em 3D que voc possa
imaginar. Ele possui uma verso gratuita, que pode ser encontrada no link
http://unity3d.com/unity/download/, com a maioria das funcionalidades que um
desenvolvedor amador necessita para criar seus jogos e public-los como
programa para Windows ou em uma pgina web. Estes jogos para sites
funcionam de um modo parecido com os jogos ou animaes para sites criados
em Flash, ou seja, necessrio que a pessoa instale um plugin para que eles
funcionem.
3

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.

1.2 Unity3D no Brasil


Algumas empresas brasileiras j esto utilizando esta ferramenta em seus
projetos, um exemplo Aquiris, empresa do sul do pas,
http://www.aquiris.com.br/, que criou o jogo Super Voleibol Brasil,
http://www.supervoleibrasil.com.br/, imagem1. Esse jogo foi patrocinado pela
Olympikus e pode ser jogado diretamente pelo navegador. Alm desse jogo a
Aquiris j trabalhou desenvolvendo jogos e programas para Embraer, GM,
Coca-Cola, Kibon entre outros.

Imagem 1 - Super Vlei Brasil (Aquiris)

A Edgy, http://www.edgy.com.br/, que uma empresa paulista, tambm


trabalha com a ferramenta e j criou vrios projetos para montadoras de
automveis, entre elas Chevrolet, Volkswagen, Peugeot, alm de empresas de
outros segmentos, como o caso das Casas Bahia.
Um exemplo de jogo que a empresa criou o Rally Toureg,
http://www.vwbr.com.br/rally/game/, imagem 2.

Captulo 1: Introduo

Imagem 2 - Rally Touareg (Edgy)

Alm dessas empresas, existem mais, como o caso da CuboCC


(http://www.cubo.cc)
e
seu
jogo
para
a
Rexona
(http://www.rexona.com.br/xrace, imagem 3) e a Quantix Games
http://www.quantixgames.com, a qual no consegui encontrar um jogo
desenvolvido por ela, mas em seu site encontra-se uma referncia ao Unity3D.

Imagem 3 - Rexona Race

1.3 Exemplos de jogos


A verso gratuita do Unity3D tem como foco amadores e pequenas empresas
desenvolvedoras de jogos, sendo quase impossvel para ns, amadores, ou
essas pequenas empresas criarem jogos como um World of Warcraft ou um
FarCry, mas existem grandes empresas utilizando o Unity que criaram jogos
impressionantes.

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.

Imagem 4 - Fusion Fall ( Web MMORPG )

Alm disso, existem licenas do programas, no gratuitas, que permitem


desenvolver jogos para o vdeo Nintendo Wii, como o caso do JumpStart
(http://jumpstart.com/), imagem 5, e para iPhone, Zombieville, imagem 6. O
jogo Zombieville simplesmente um dos jogos mais vendidos para iPhone,
chegando a ficar no topo da lista de mais vendidos.
Existe um plano da empresa criar uma licena para que se possa publicar os
jogos tambm para o Xbox 360, assim, se voc criar um jogo que faa
sucesso, voc tem a possibilidade de publicar para diversas outras
plataformas.

Imagem 5 - JumpStart para Nintendo Wii

Captulo 1: Introduo

Imagem 6 - Zombieville (iPhone)

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.

1.5 Programas auxiliares


Alm do Unity3D existem outros programas auxiliares para o desenvolvimento
de um jogo, segue aqui uma lista desses programas, todos so gratuitos:

Blender: Ferramenta para modelagem e animao de objetos 3D.

Audacity: Editor de audio open source.

Gimp: Editor de imagens.


7

Captulo 1: Introduo

Inkscape: Para criao de desenhos.

Melody Raiser: Programa de gerao de msica procedural.

SFXR: Programa de gerao de efeitos sonoros.

No o enfoque desta apostila detalhar o funcionamento desses programas,


voc s precisa saber que eles sero necessrios caso voc queira criar seus
prprios modelos, animaes, msicas e tudo mais.

1.6 Instalando o Unity no Windows


Baixe o Unity, http://unity3d.com/unity/download/, aps terminar o download,
execute o instalador.
A seguinte tela ir aparecer:

Clique em Next.

Captulo 1: Introduo

Leia o acordo de licena e, se concordar, clique em I Agree para ir para a


prxima tela.

Captulo 1: Introduo

Clique em Next.

10

Captulo 1: Introduo

Escolha o local da instalao e clique em Install.

11

Captulo 1: Introduo
Aguarde a instalao finalizar.

Clique em Finish, o Unity ser executado.

12

Captulo 1: Introduo
Clique em Register.

Selecione Internet Activation e clique em Avanar.

13

Captulo 1: Introduo

Espere o programa se conectar ao servidor e abrir seu navegador:

Clique na pgina que foi aberta pelo navegador em Free.


14

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

Clique em Concluir. E abra o Unity novamente.


No prximo captulo farei uma breve introduo interface do Unity, aos
principais conceitos envolvendo programao 3D e uma descrio das
principais palavras relacionadas a esse tipo de programao.

16

Captulo 2: Principais conceitos

Captulo

2
2 Principais conceitos

ste captulo apresenta uma breve introduo ao ambiente de


desenvolvimento do Unity3D assim como alguns dos vrios conceitos
envolvidos na rea de programao de jogos 3D. O objetivo deste
captulo tornar o leitor mais familiar com o uso do Unity3D e com os principais
termos encontrados na rea, pois existem muitas pessoas com pouca
experincia na rea e que costumam ficar confusas com eles. Boa parte do que
est neste captulo est disponvel na prpria documentao do Unity, porm
em ingls.

2.1 O ambiente do Unity3D


Antes de continuar lendo este tutorial, recomendo que instale o programa do
Unity3D (http://unity3d.com/unity/download/) e execute. Para aqueles que esto
abrindo o programa pela primeira vez ele abrir o projeto Tropical Paradise por
padro, imagem 7.

17

Captulo 2: Principais conceitos

Barra de Ferramentas / Menu

Hierarquia
Inspetor
Cena / Jogo

Projeto

Imagem 7 - Tela inicial do Unity

O Unity possibilita ao usurio escolher o lugar que cada elemento do programa


ir ficar, porm o Unity possui alguns layout pr-configurados, o layout usado
na imagem o padro, se o seu programa est configurado com um layout
diferente voc pode mud-lo na Barra de ferramentas-> Window->Layouts>Revert Factory Settings. Essa tela composta dos seguintes elementos:

2.1.1 Viso de Projeto


Quando voc cria um projeto no Unity, ele ir
criar uma pasta contendo todas as Assets
(scenes, scripts, modelos 3D, texturas, arquivos
de udio, vdeo, imagens, etc) do projeto. Tudo o
que tem nessa pasta, mostrado na viso de
projeto. Se voc clicar com o boto do direito do
mouse em alguma dessas Assets, voc poder
escolher a opo Reveal in Explorer, que abrir
a pasta que contm o arquivo.
Ateno: no mova os arquivos usando o
Explorer do Windows, use o editor do Unity, pois
isso pode causar problemas ao projeto.
Para adicionar novas Assets ao projeto, voc
pode arrastar o arquivo do Windows para a viso
18

Captulo 2: Principais conceitos


de projeto ou utilizar o comando na barra de ferramentas Assets -> Import
New Asset. O arquivo ficar pronto para ser usado no projeto.
As cenas do jogo tambm ficam nessa pasta. Cada cena representa um level
do jogo. O Unity carrega por padro a cena Islands.unity, para criar uma nova
aperte ctrl+n ou v na Barra de Ferramentas->File->New Scene. Para salvar a
cena aperte ctrl+s ou v na Barra de Ferramentas->File->Save Scene.
Alguns
Assets
precisam
ser
criados
diretamente no editor do Unity, para fazer
isso, v na viso do projeto e use o menu
Create, ou clique com o boto direito do
mouse->Create.
Mais tarde irei explicar o que cada tipo de
Assets, por hora tente criar uma pasta, para
mudar o nome dela, a selecione com um
clique e aperte F2.

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

Captulo 2: Principais conceitos


Voc pode expandir ou contrair o objeto pai para ver quais so seus filhos sem
afetar com isso o jogo.

Dois objetos sem pais

Um objeto sendo pai de outro

2.1.3 Menu de Topo

Imagem 8 - Menu de Topo

O menu de topo consiste em cinco controles bsicos. Cada um relacionado a


partes diferente do editor.

mostra.
utilizado
mostrados

Transform Tools ferramenta utilizada na viso da cena.


Transform Gizmo Toggles -- afeta o que a viso da cena
Play/Pause/Step Buttons -- used with the Game View
para
executar/pausar/encerrar
o
jogo.
Layers Drop-down -- View controla quais objetos sero
na
cena.
Layout Drop-down -- controla a disposio de todas as vises.

20

Captulo 2: Principais conceitos

2.1.4 Viso da Cena

Imagem 9 - Viso da Cena

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.

2.1.5 Posicionamento de objetos


Ao

selecionar

algum

objeto

voc

pode

utilizar

Transform

Tools,

, para mudar sua posio (translate tool), rotao (rotate tool)


ou tamanho (scale tool).

21

Captulo 2: Principais conceitos

2.1.6 Scene Gizmo


No canto superior direito da viso da cena est o Gizmo da cena.
Ela mostra a orientao da cmera da cena e possibilita voc
mudar rapidamente a orientao da mesma, basta clicar em algum
de seus vrtices ou no centro para habilitar uma viso em
perspectiva da cena, se segurar o shift enquanto clica no centro do
Gizmo, voc habilita a viso isomtrica.

Viso em perspectiva.

Viso isomtrica. Os objetos no ficam menores com a distncia aqui!


22

Captulo 2: Principais conceitos

2.1.7 Barra de controle da cena


O primeiro menu drop-down para escolher o modo de desenho. A mudana
no modo de desenho no ter efeitos no jogo quando ele for publicado.

Draw Mode drop-down


O Segundo o modo de renderizao. Tambm no ter efeito no jogo aps
publicado.

Render Mode drop-down


Os outros dois botes so relacionados iluminao da cena e o segundo a
apresentao de skybox, elementos da GUI e outras coisas na viso da cena.

2.1.8 Viso de jogo

Imagem 10 - Viso de jogo

23

Captulo 2: Principais conceitos


A viso de jogo renderizada atravs da cmera dentro do jogo. Ela
representa como seu jogo ficar quando for publicado.

2.1.9 Play Mode

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.

2.1.10 Barra de controle da viso de jogo


O primeiro menu drop-down controla a escala, o segundo maximize a tela
quando o jogo comear, o terceiro mostra os Gizmos da cena e o quarto as
estatsticas do jogo, tais como frame rate e nmero de polgonos na cena.

Imagem 11 - Estatstica do jogo

24

Captulo 2: Principais conceitos

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

Captulo 2: Principais conceitos

Adicionando componentes atravs do menu de componentes


Clicando com o boto direito do mouse
no ttulo do componente na viso do
inspetor, aparece uma lista de opes
onde voc pode remover o componente
do GameObject.

26

Captulo 2: Principais conceitos


Use o menu drop-down de Layer para
associar um layer de renderizao a seu
GameObject. Utiliza o menu drop-down
de Tag para associar uma Tag a seu
GameObject. Voc tambm pode mudar
o nome de seu GameObject atravs do
inspetor.

2.1.12 Barra de Status


A barra de status est no canto inferior da tela e ela mostra erros de
compilao e mensagens de debug. Se existe algum problema no seu jogo,
ficar de olho nessa barra o melhor caminho, voc pode dar um clique duplo
com o mouse para mostrar o console com as mensagens da barra de status.

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

Captulo 2: Principais conceitos

Imagem 12 - Console

O Console mostra mensagens de erros, warnings e textos de debug. Voc


enviar suas prprias mensagens para o console utilizando Debug.Log() ou
Debug.Error() em seus cdigo.

2.2. Sistema de coordenadas 3D


Nesta seo sero descritos alguns elementos do sistema de coordenadas 3D.

2.2.1. O plano cartesiano


Uma das formas de descrever a posio de um ponto no espao represent-lo em um
plano cartesiano. Para representar um ponto em duas dimenses, definimos o sistema de
coordenadas como sendo composto por dois eixos, x e y, dispostos ortogonalmente, que
dividem o plano em quatro quadrantes. O eixo x denominado o eixo das abscissas e o
y o das ordenadas. Esses eixos so divididos em unidades contadas a partir do ponto de
origem do plano, o ponto de interseco entre os dois eixos, que servem para nos dar
uma idia de distncia, o que chamamos de coordenadas, assim, um ponto nesse plano
representado por um par de coordenadas, x e y, que representa a distncia ao longo de
cada eixo a partir do ponto de origem.
A figura 1 mostra como representar um ponto P(4,6), em que P significa ponto e (4,6)
significa que o ponto est quatro unidades de distncia em relao ao ponto de origem
do plano ao longo do eixo x, e seis unidades de distncia em relao ao ponto de origem
do plano ao longo do eixo y.

28

Captulo 2: Principais conceitos

O plano cartesiano 2D

Para representar o espao em trs dimenses, adicionamos o eixo z ao sistema de


coordenadas, esse eixo passa pelo ponto de origem do sistema de coordenadas e
representa a profundidade do ponto. A figura 2 mostra como representar o eixo z no
plano.

O plano cartesiano com os eixos x, y e z

2.2.2. Coordenadas locais e globais


Como foi visto na seo anterior, a posio de um ponto pode ser representado em
termos de trs variveis, x,y e z. Por ponto, podemos entender um objeto no espao. A
posio global de um objeto no espao representada em relao origem do plano. s
vezes necessrio representar a posio de um objeto a outro, assim dizemos que todo
objeto tem seu prprio ponto de origem e quando desejamos representar a posio de
um objeto em relao a outro, dizemos que estamos utilizando coordenadas locais do
objeto de referncia. A figura 3 mostra a diferena entre coordenadas locais e globais.
29

Captulo 2: Principais conceitos

Coordenadas locais e globais

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

Captulo 2: Principais conceitos

Diferena entre ponto e vetor

2.2.4. Quaternies e rotaes


Para realizar a rotao de objetos no espao tridimensional so utilizados quaternies.
Para representar a direo que um objeto aponta no espao no basta apenas representar
sua posio, necessrio atribuir um ngulo a ela. Em jogos quando um objeto criado,
definida a sua posio e um ngulo inicial a ele. Quando desejamos fazer alguma
rotao nesse objeto, realizamos com base em sua posio e seu ngulo atual, ou seja,
em seu quaternio.

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

Captulo 2: Principais conceitos

A cmera

Os objetos vermelhos no so renderizados

2.2.7. Representao de formas


Para representar formas em trs dimenses so utilizados polgonos, em jogos
geralmente so utilizados tringulos, ou faces, que so representados por trs pontos
interligados por vrtices. A combinao de polgonos permite a construo de formas
mais complexas, conhecidas como Meshes. atravs desses dados que so feitos os
clculos de deteco de colises entre um objeto e outro no espao.

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.1. Corpos rgidos


Corpos rgidos so objetos que, durante o jogo, so afetados pelas leis da fsica, ou seja,
os motores de fsica realizam clculos para tornar o movimento desses objetos realistas.
Corpos rgidos podem possuir as seguintes propriedades:
Massa;
Gravidade;
Velocidade;
Atrito.
32

Captulo 2: Principais conceitos

2.3.2. Deteco de coliso


A deteco de colises entre objetos durante o jogo tambm de
responsabilidade do motor fsico do jogo. Adicionando um elemento ao objeto
denominado collider, o objeto passa a se comportar de um modo diferente quando
algum objeto colide com ele, respondendo a coliso, normalmente alterando a
velocidade e direo de seu movimento.

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: Introduo ao Java Script

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.

3.1 Seu primeiro programa


Crie um novo projeto, Barra de Ferramentas->File->New Project.
Aparecer uma caixa de dialogo onde voc poder escolher o local onde seu
projeto ser criado em seu computador e os pacotes contendo um conjunto de
Assets a serem importados para o projeto durante a criao do projeto.
Cheque a opo Standard Assets.unityPackage, o local do seu projeto e o
nome dele e clique no boto Create.
Um projeto totalmente novo ser criado, esse processo pode demorar um
pouco.

Voc ver uma tela mais ou menos assim:

34

Captulo 3: Introduo ao Java Script

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

Captulo 3: Introduo ao Java Script


Mude a posio da cmera at que ela focalize o cubo, nesse caso clique na
translate tool e mude a posio da cmera pelo eixo z, azul, aperte o play para
ver como ficaria a cena durante o jogo.
Voc pode mudar o layout clicando e arrastando a aba Game at a parte
inferior da viso de cena, faa isso at que o layout e a posio da cmera o do
cubo fique do seguinte modo:

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

Captulo 3: Introduo ao Java Script

function Update () {
}

Cdigo 1 - Script inicial

Mude o script e escreva o seguinte cdigo:

function Update () {
print("Ola");
}

Cdigo 2 Exemplo Ola

Clique e arraste o script da viso de projeto para a viso de hierarquia no


objeto Cubo. Aperte o play.
Voc ver na barra de status, na parte inferior, a seguinte mensagem: Ola

37

Captulo 3: Introduo ao Java Script

Aperte o play novamente para encerrar o jogo. D um duplo clique na barra de


status para abrir o console e confira que a mensagem foi exibida no console.
Isso significa que tudo funcionou, mas agora voc deve estar se perguntando,
Ok, mas o que aconteceu?.
A primeira parte que consiste em posicionar a cmera para que ela focalize o
Cubo intuitiva, funciona como na vida real, onde quando se deseja tirar uma
foto, necessrio posicionar a cmera em um determinado local e mirar ela em
um objeto para que este objeto aparea na foto. Foi o que fizemos. Voc
poderia utilizar as outras ferramentas de posicionamento, tais como a rotate
tool para rotacionar a cmera em conjunto com a translate tool para que o
objeto fosse visto de um outro ngulo.
necessrio prestar ateno no campo de viso da cmera que
representado na viso de cena como um campo com arestas brancas. Tudo o
que est dentro deste campo ser renderizado na cena.
Na segunda parte criamos um Java Script e adicionamos a ele a um objeto,
assim o objeto passou a ter esse script como um de seus componentes. Esse
script tem uma funo chamada Update() que executada repetidamente e
automaticamente pelo Unity em intervalos curtos de tempo, vrias vezes por
segundo, depende da quantidade frames por segundo do jogo, ela executada
uma vez a cada frame.

38

Captulo 3: Introduo ao Java Script


Quando um script com essa funo colocado em um GameObject. Se voc
colocar esse script em mais de um GameObject, cada GameObject executar
seu prprio script, executando a funo Update() desse script.
No so todas as funes que so executadas automaticamente, porm se
voc colocar uma funo em um script com o nome de Update(), essa funo
ser executada automaticamente pelo Unity. O comando print exibe um texto
no Console e na barra de status.
Antes de explicar detalhadamente como o Java Script funciona, vamos a mais
um teste, mude o cdigo do script Ola para:

function Update () {
transform.Rotate(0, 5*Time.deltaTime, 0);
}

Cdigo 3 Exemplo gira cubo

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.

3.2 Variveis e tipos de dados


Na escola aprendemos a representar valores atravs de variveis,
principalmente nas aulas de matemtica. Por exemplo, quando eu digo que um
nmero x vale 5 e digo que um nmero y igual a x+1, sabemos que o se
substituirmos o x do x+1 por 5, que o valor de x conclumos que y igual a
5+1, ou seja, 6. Assim:
x=5;
y=x+1

=>

y=5+1

=>

y = 6;

Para declarar variveis em Java Script, fazemos assim:


var x = 5;
var y = x+1;
V no script Ola e mude-o para:
39

Captulo 3: Introduo ao Java Script

var x = 5;
function Update () {
var y = x+1;
print(y);
}

Cdigo 4 Exemplo declarao de varivel

Aperte o play e perceba que a barra de status mostra o valor 6.


Nesse caso, x e y so variveis, ou seja, valores que podem sofrem alterao.
Se mudarmos o valor de x para 20 e se y igual a x+1, ento y passar a ser
21. Pois y representado em funo de x. Esse um dos conceitos
fundamentais que voc deve entender para comear a programar Java Script,
representar valores em forma de variveis.

Agora selecione o Cubo na viso de


hierarquia e veja que a viso do inspetor
est diferente na parte que mostra o
script Ola.
Mude o valor de x no inspetor para 20 e
aperte play.
Perceba que a barra de status agora
mostra o valor 21. Se voc abrir o script
Ola ver que ele est inalterado, x ainda
est com o valor 5, isso por que o
inspetor permite voc alterar valores de
variveis de um script sem alterar o
script em si. Isso evita que voc tenha
que reescrever o script toda vez que
voc tiver que adicionar ele a um novo
GameObject e ter que mudar alguns
valores desse script.
Voc pode alterar o valor de x enquanto
o jogo est rodando e ver o resultado,
isso permite voc achar um bom valor
para a varivel, porm valores alterados durante a execuo do jogo sero
revertidos para o valor que estava antes da execuo.
40

Captulo 3: Introduo ao Java Script


Voltemos a histria de variveis. Podemos dizer que x uma varivel do tipo
laranja e que y tambm laranja, ento x representa 5 laranjas e y 6 laranjas,
quando dizemos isso, estamos especificando um tipo para a varivel x,
dizemos isso quando desejamos fazer alguma coisa com essas variveis que
s podem ser feitas se elas forem de um tipo. Nesse caso desejamos fazer um
suco de laranja.
O Java Script possui uma srie de tipos bsicos e cada um serve para alguma
coisa, um deles o tipo String que serve para trabalhar com palavras.
Por exemplo, para declarar uma varivel do tipo String e atribuir a ela a
mensagem Ola, podemos fazer desse modo:
var mensagem:String = Minha primeira string;
Para fazer um teste v no script Ola e altere-o para:

var mensagem:String = Minha primeira string;


function Update () {
print(mensagem);
}

Cdigo 5 Exemplo string

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;

Captulo 3: Introduo ao Java Script


Inteiro de 16-bit sem sinal.
Inteiro de 32-bit sem sinal.
Inteiro de 64-bit sem sinal.
Nmero decimal.
Nmero decimal duas que pode ter um valor
maior que o float, usado para nmeros muito
extensos.
boolean Represents a true / false value. Reprenseta
verdadeiro (true) ou falso (falso),
char
Um caracter.
ushort
uint
ulong
float
double

String

Representa um texto ou uma srie de


caracteres.

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.

3.3 Declarao de variveis e palavras reservadas


Para declarar uma varivel necessrio escrever primeiro a palavra var e
depois o nome da varivel, toda comando em um Java Script deve ser
encerrado com um ; (ponto e virgula), vamos declarar uma varivel com o
nome de ano:
var ano;
Voc pode atribuir um valor para uma varivel em sua declarao:
var ano = 2009;
Tambm possvel especificar um tipo de uma varivel em sua declarao
colocando : (dois pontos) e o nome do tipo depois do nome, por exemplo, como
ano um nmero inteiro podemos declarar ele como sendo do tipo int assim:
var ano : int = 2009;

42

Captulo 3: Introduo ao Java Script


O primeiro caractere do nome de uma varivel deve ser uma letra ou _
(underline), maiscula ou minscula, os demais caracteres podem ser
nmeros, letras ou o caractere especial _ (underline). Exemplos de nomes
vlidos para variveis:
Homem, homem2, _homem, mul89_her, bola883, bola, b, c, iiio0__ou, etc
Exemplos de nomes invlidos para variveis:
9homem, %idade, *ok, .ddd, &hoje
Uma varivel tambm no pode ter os seguintes nomes pois so palavras
reservadas da linguagem Java Script:

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

Ou seja, tambm seria invlida a seguinte varivel:


var continue;
Essas palavras reservadas so os tipos de variveis e comandos que a
linguagem usa para especificar o que o programa deve fazer.

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

Captulo 3: Introduo ao Java Script

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.
+
-

*
/

%
++

--

Soma dois nmeros.


Subtrai o nmero da
esquerda pelo da
direita.
Multiplica um nmero
pelo outro.
Divide o nmero da
esquerda pelo da
direita.
Retorna o resto da
diviso.
Incrementa em 1 o
valor da varivel. Pode
ser usado a direita ou
a esquerda da
varivel.
Decrementa em 1 o
valor da varivel. Pode
ser usado a direita ou
a esquerda da
varivel.

Exemplo
var palavra = Bom +
dia;
var total = 5 + 6;
var total = 11 3;

Resultado
Bom dia

var total = 2*5;

10

var total = 9 / 2;

4.5

var total = 9 % 2;

var total = 2;
total++;

var total = 2;
total--;

11
8

Alm dos operadores matemticos, existem os operadores relacionais, que


retornam verdadeiro (true) ou falso (false), ou seja, retorna um valor booleano,
dependendo se a expresso verdadeira ou no:
Operador
<
>
==

Funo
Menor que.
Maior que.
Igual.

Exemplo
4 < 5;
4 > 5;
4 == 5;
44

Resultado
true
false
false

Captulo 3: Introduo ao Java Script


<=
>=
!=

Menor ou igual.
Maior ou igual.
Diferente.

4 <= 5;
4 >= 5;
4 != 5

true
false
true

Tambm podemos combinar duas expresses relacionais atravs dos


operadores lgicos &&, que verifica se as duas expresses so verdadeiras, e
o || que verifica se uma das duas expresses verdadeira.
Exemplos para o operador lgico E, &&:
Exemplo
4 < 5 && 4 > 5

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.

Exemplos para o operador lgico OU, ||:


Exemplo
4 < 5 || 4 > 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.

Por ltimo existem os operadores de atribuio, que, como o prprio nome


sugere, so utilizados na atribuio de um valor a uma varivel:
Operador Funo
=
Atribui um valor a uma
varivel.
+=
Soma o valor atual da
varivel com o valor de
atribuio.
-=
Subtrai o valor atual da
varivel com o valor de
atribuio.
*=
Multiplica o valor atual
da varivel pelo valor
de atribuio.
/=
Divide o valor atual da
varivel pelo valor de
atribuio.
%=
Retorna o resto da
diviso do valor atual
da varivel pelo valor
de atribuio.

Exemplo
var total = 6;

Resultado
Bom dia

var total = 6;
total +=6

11

var total = 11;


total -= 3;

var total = 2;
total *= 5;

10

var total = 9;
total /= 2;

4.5

var total = 9;
total %= 2;

45

Captulo 3: Introduo ao Java Script

3.5 Comandos condicionais


Existem alguns comandos em Java Script que controlam a execuo de uma
parte do cdigo de acordo com determinada condio. So os comandos
condicionais.
Comando if (se):
Executa um determinado conjunto de aes se uma determinada condio
verdadeira. Ou seja, se (if) determinada condio verdadeira, ento realize
as seguintes aes.
Sintaxe:
if ( condio )
{
Ao1;
Ao2;
....
AoN;
}
Se deseja condicionar a execuo de apenas uma ao ao comando if, no
necessrio colocar os {}:
if (condio) Ao;
Exemplo:

var x = 5;
function Update () {
if ( x==5 ){
print(Verdade);
}
}

Cdigo 6 Exemplo if

Comando else (seno):


46

Captulo 3: Introduo ao Java Script

Complemento do comando if, funciona como um seno, ou seja, quando


usamos o if, dizemos, Se (if) determinada condio verdadeira, ento, realize
um determinado conjunto de aes, seno (else), realize outro conjunto de
aes.
Sintaxe:
if ( condio )
{
Ao1;
Ao2;
....
AoN;
}
else
{
Ao1;
Ao2;
....
AoN;

}
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

Captulo 3: Introduo ao Java Script


}
else
{
print(Mentira);
}
}

Cdigo 7 Exemplo else

Comando while (enquanto):


Executa um conjunto de aes repetidamente enquanto uma determinada
condio for verdadeira.
Sintaxe:
while ( condio )
{

Ao1;
Ao2;
....
AoN;

Exemplo

var x = 0;
function Update () {
while ( x<100 ){
print(x vale +x);
x++;
}
}

48

Captulo 3: Introduo ao Java Script


Cdigo 8 Exemplo while

Comando for (para):


Um while incorpado, declara a varivel de controle, a condio de parada e o
como o incremento da varivel de controle ser feito tudo de uma vez.
Sintaxe:
for ( iniciaoDaVarivel; condio; incrementoDaVarivel )
{
Ao1;
Ao2;
....
AoN;
}
Exemplo:

function Update () {
for (var x=0; x < 100; x++ ){
print(x vale +x);
}
}

Cdigo 9 Exemplo for

Comando break (interromper) e contine:


So utilizados dentro de um comando while ou for, o break quebra a repetio
e continue executando os cdigos que esto depois do comando while ou for
em questo, e o continue volta imediatamente para o inicio da repetio.

function Update () {
for (var x=0; x < 100; x++ ){
print(x);

49

Captulo 3: Introduo ao Java Script


if ( x ==50) break;
}
}

Cdigo 10 Exemplo break

3.6 Objetos, propriedades e mtodos


Todo jogo criado pelo Unity composto por objetos, por hora basta saber que o
Unity cria objetos durante a execuo do jogo, por exemplo, quando o jogo
iniciado o Unity cria o objeto Time que possui informaes sobre o tempo de
jogo. Modelos, a cmera, terrenos, etc. Tambm so considerados objetos,
como na vida real, dizemos que tudo que existe so objetos, incluindo ns
mesmos. Todo objeto tem propriedades, ou seja atributos, por exemplo, um
homem tem olhos. O objeto Time tem o atributo deltaTime que retorna a
diferena de tempo entre uma atualizao e outra do programa.
Para fazer referencia a um determinado atributo de um objeto usamos a
seguinte sintaxe, objeto ponto atributo:
<Objeto>.<Atributo>;
No caso, para acessar o atributo deltaTime do objeto Time, faramos:
Time.deltaTime;
Exemplo:

var x:float = 0;
function Update () {
x = Time.deltaTime;
print(x);
}

Cdigo 11 Exemplo break

Objetos tambm possuem funes, ou mtodos, que so acessados de


maneira similar aos atributos, ou seja, objeto ponto funo():
50

Captulo 3: Introduo ao Java Script


<Objeto>.Funo();
Na vida real, os seres vivos tem a funo de se reproduzir entre outras. No
Unity, existe um objeto matemtico que tem vrias funes, entre elas uma de
retornar o valor da raiz quadrada de um nmero, o objeto o Mathf e a funo
Sqrt que tem como parmetro o nmero que desejamos saber a raiz
quadrada:
Exemplo para calcular a raiz quadrada de 10:
print(Mathf.Sqrt(10));
Para criar uma funo usamos a seguinte sintaxe:
function NomeDaFuno( Parmetros )
{
Ao1;
Ao2;
Ao3;
}
Por exemplo, para criar uma funo que multiplica um nmero pelo outro e
imprime o valor na tela faramos o seguinte:
function multiplica( numero1, numero2 )
{
var resultado = numero1 * numero2;
print(resultado);
}
Segue um exemplo de um script que cria e usa essa funo:

function multiplica( numero1, numero2 )


{

var resultado = numero1 * numero2;


print(resultado);

51

Captulo 3: Introduo ao Java Script

function Update () {
multiplica(10,20);
}

Cdigo 12 Exemplo break

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 multiplica( numero1, numero2 ):float


{
var resultado = numero1 * numero2;
return resultado;
}

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

Captulo 3: Introduo ao Java Script


// esse um comentrio de uma linha
Outra forma o comentrio de vrias linhas que comea com /* e termina com
*/, exemplo:
/*
Este comentrio tem vrias linhas
A gente escreve, escreve, escreve
E quando v j tem comentrio suficiente
Encerra os comentrios
*/

3.8 Isso no tudo


Existem mais conceitos em Java Script que os apresentados nesse captulo,
tais como criao de classes, modificadores de atributos, etc. Conforme a
complexidade de um jogo avana, ser necessrio o leitor pesquisar mais
sobre Java Script. Tentarei manter os exemplos desse livro o mais simples
possvel para tornar fcil o entendimento de como a Unity funciona, espera-se
que o leitor se torne aos poucos mais e mais familiarizado com o Unity e com a
programao em Java Script. Espera-se que at o final da apostila o leitor se
torne apto a criar programas mais complexos, ou seja, que usem todos os
conceitos apresentados nesse captulo.

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.

4.1 Utilizando Terrenos


4.1.1 Criando um novo Terreno
Um novo terreno pode ser criado a partir da Barra de Ferramentas->Terrain>Create Terrain. Isto adicionar um Terreno para sua viso de projeto e para a
viso de hierarquia.

Seu novo terreno ir se parecer com a seguinte imagem:

54

Captulo 4: Terrenos

Um novo terreno na viso da cena


Se voc preferir um terreno com um tamanho diferente, v em Barra de
Ferramentas->Terrain->Set Resolution

Alterando a resoluo do terreno


Na imagem acima, existem variveis que podem ser alteradas:

Terrain Width: A largura do terreno.


Terrain Height: A altura do terreno.
Terrain Length: O comprimento do terreno.
HeightMap Resolution: A resoluo do HeightMap para o terreno
selecionado.
Detail Resolution: A resoluo do mapa que controla a grama e os
meshes de detalhes. Por questes de performance, quanto menor o
valor, melhor.
Control Texture Resolution: The resolution of the splat map used to layer
the different textures painted onto the Terrain.
Base Texture Resolution: A resoluo da textura de composio usada
no lugar da diviso do mapa a certas distncias.
55

Captulo 4: Terrenos

4.1.2 Navegando pelo terreno


Terrenos funcionam um pouco diferente dos outros GameObjects. A coisa mais
notvel que no possvel mudar a posio dos terrenos pelo editor de cena.
Ao invs disso, voc pode utilizar pincis para pintar e manipular seu terreno.
Se voc deseja mudar a posio do terreno, voc o faz mudando os valores
das propriedades Transform, no inspetor, mas no possvel mudar sua
escala ou rotacion-lo.
Quando o terreno estiver selecionado na viso de hierarquia, voc pode apertar
a tecla F para centraliz-lo no editor da cena.

4.1.3 Editando o Terreno


Quando o terreno est selecionado, aparecer no inspector as ferramentas de
edio de terreno.

A Ferramenta de Edio de Terrenos no Inspetor

56

Você também pode gostar