Your SlideShare is downloading. ×
  • Like
Apostila unity3dv033
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Apostila unity3dv033

  • 1,455 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,455
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
146
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Unity3D Uma introduçãoAutor: Thiago Campos Viana
  • 2. Unity3D Uma introdução Copyright © 2009 Thiago Campos Viana São Carlos, SP – Brasil thiagocamposviana@gmail.com Creative Commons Attribution 3.0 UnportedVocê pode: • copiar, distribuir, exibir e executar a obra. • criar obras derivadas.Sob as seguintes condiçõesAtribuição — Você deve dar crédito ao autor original, da forma especificadapelo autor ou licenciante.Compartilhamento pela mesma Licença — Se você alterar, transformar oucriar algo em cima deste trabalho, você deve distribuir o trabalho resultantesomente com uma licença igual, similar ou com compatível com esta.Para maiores informações acesse:http://creativecommons.org/licenses/by-sa/3.0/legalcode
  • 3. ConteúdoLista de Imagens ............................................................................................................... 3Lista de códigos ................................................................................................................ 31 Introdução ...................................................................................................................... 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 ............................................................................. 82 Principais conceitos ..................................................................................................... 17 2.1 O ambiente do Unity3D........................................................................................ 17 2.1.1 Visão de Projeto ......................................................................................... 18 2.1.2 Hierarquia .................................................................................................... 19 2.1.3 Menu de Topo ............................................................................................ 20 2.1.4 Visão 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 Visão de jogo .............................................................................................. 23 2.1.9 Play Mode ................................................................................................... 24 2.1.10 Barra de controle da visão 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. Quaterniões e rotações .................................................................................. 31 2.2.5. Renderização ................................................................................................ 31 2.2.6. Câmeras ........................................................................................................ 31 2.2.7. Representação de formas .............................................................................. 32 2.2.8. Materiais ....................................................................................................... 32 2.3. Física.................................................................................................................... 32 2.3.1. Corpos rígidos .............................................................................................. 32 2.3.2. Detecção de colisão ...................................................................................... 33 2.3 Conclusão ............................................................................................................. 333 Introdução ao Java Script ............................................................................................ 34 3.1 Seu primeiro programa ......................................................................................... 34 3.2 Variáveis e tipos de dados .................................................................................... 39 3.3 Declaração de variáveis e palavras reservadas ..................................................... 42 3.4 Operadores ............................................................................................................ 43 3.5 Comandos condicionais ........................................................................................ 46 3.6 Objetos, propriedades e métodos .......................................................................... 50 3.7 Comentários .......................................................................................................... 52 3.8 Isso não é tudo ...................................................................................................... 534 Terrenos ....................................................................................................................... 54 1
  • 4. 4.1 Utilizando Terrenos .............................................................................................. 54 4.1.1 Criando um novo Terreno......................................................................... 544.1.2 Navegando pelo terreno ..................................................................................... 564.1.3 Editando o Terreno ............................................................................................ 56 2
  • 5. Lista de ImagensImagem 1 - Super Vôlei Brasil (Aquiris) ..................................................................... 4Imagem 2 - Rally Touareg (Edgy) ............................................................................... 5Imagem 3 - Rexona Race............................................................................................. 5Imagem 4 - Fusion Fall ( Web MMORPG ) ............................................................... 6Imagem 5 - JumpStart para Nintendo Wii.................................................................. 6Imagem 6 - Zombieville (iPhone) ................................................................................ 7Imagem 7 - Tela inicial do Unity ................................................................................ 18Imagem 8 - Menu de Topo ......................................................................................... 20Imagem 9 - Visão da Cena......................................................................................... 21Imagem 10 - Visão de jogo ........................................................................................ 23Imagem 11 - Estatística do jogo ................................................................................ 24Imagem 12 - Console .................................................................................................. 28Lista de códigosCódigo 1 - Script inicial ............................................................................................... 37Código 2 – Exemplo Ola ............................................................................................. 37Código 3 – Exemplo gira cubo................................................................................... 39Código 4 – Exemplo declaração de variável ........................................................... 40Código 5 – Exemplo string ......................................................................................... 41Código 6 – Exemplo if ................................................................................................. 46Código 7 – Exemplo else ............................................................................................ 48Código 8 – Exemplo while .......................................................................................... 49Código 9 – Exemplo for .............................................................................................. 49Código 10 – Exemplo break ....................................................................................... 50Código 11 – Exemplo break ....................................................................................... 50Código 12 – Exemplo break ....................................................................................... 52Código 13 – Exemplo break ....................................................................................... 52 3
  • 6. Capítulo 1: Introdução Capítulo 11 IntroduçãoB 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 estaapostila foi criada de um hobbista para hobbistas. Não sou um desenvolvedorde jogos profissional, tenho mais experiência com desenvolvimento web, maisespecificamente com o CMS eZ publish, porém adoro a área de jogos egostaria de compartilhar o pouco que sei sobre esta ferramenta dedesenvolvimento que possui uma versão gratuita, a Unity3D, e como não seencontra apostilas em português sobre esta ferramenta, resolvi criar estaapostila.A apostila tem como público alvo todas as pessoas interessadas emdesenvolvimento de jogos 3D sem muita experiência com programação oucom o Unity3D, assim, ao final da apostila espera-se que você estejapreparado para iniciar seu primeiro projeto de um jogo 3D. Tentarei evitar aomáximo termos muitos técnicos, pois gostaria de ver adolescentes de todas asclasses econômicas criando jogos nessa ferramenta assim como eles criamvídeos para o site youtube.com com o Windows Movie Maker, pois quando eucomecei a usar a internet em 2002, antes de começar o curso de bachareladoem informática na USP de São Carlos eu era um desses adolescentes. Apesarde tudo, será necessário para quem deseja se aventurar na área dedesenvolvimento um conhecimento mínimo de inglês.Então, sem mais delongas, vamos começar a falar de desenvolvimento dejogos com o Unity3D.1.1 O que é o Unity 3DO Unity3D é um programa de desenvolvimento com todos os recursosnecessários para desenvolver qualquer tipo de jogo em 3D que você possaimaginar. Ele possui uma versão gratuita, que pode ser encontrada no linkhttp://unity3d.com/unity/download/, com a maioria das funcionalidades que umdesenvolvedor amador necessita para criar seus jogos e publicá-los comoprograma para Windows ou em uma página web. Estes jogos para sitesfuncionam de um modo parecido com os jogos ou animações para sites criadosem Flash, ou seja, é necessário que a pessoa instale um plugin para que elesfuncionem. 3
  • 7. Capítulo 1: IntroduçãoEsse plugin é um programa que é encontrado no linkhttp://unity3d.com/webplayer/ e funciona parecido com o plugin do Flash, ouseja, você consegue jogar através do seu navegador, Internet Explorer, Firefox,entre outros.1.2 Unity3D no BrasilAlgumas empresas brasileiras já estão utilizando esta ferramenta em seusprojetos, um exemplo é Aquiris, empresa do sul do país,http://www.aquiris.com.br/, que criou o jogo Super Voleibol Brasil,http://www.supervoleibrasil.com.br/, imagem1. Esse jogo foi patrocinado pelaOlympikus e pode ser jogado diretamente pelo navegador. Além desse jogo aAquiris já trabalhou desenvolvendo jogos e programas para Embraer, GM,Coca-Cola, Kibon entre outros. Imagem 1 - Super Vôlei Brasil (Aquiris)A Edgy, http://www.edgy.com.br/, que é uma empresa paulista, tambémtrabalha com a ferramenta e já criou vários projetos para montadoras deautomóveis, entre elas Chevrolet, Volkswagen, Peugeot, além de empresas deoutros 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. 4
  • 8. Capítulo 1: Introdução Imagem 2 - Rally Touareg (Edgy)Além 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 Gameshttp://www.quantixgames.com, a qual não consegui encontrar um jogodesenvolvido por ela, mas em seu site encontra-se uma referência ao Unity3D. Imagem 3 - Rexona Race1.3 Exemplos de jogosA versão gratuita do Unity3D tem como foco amadores e pequenas empresasdesenvolvedoras de jogos, sendo quase impossível para nós, amadores, ouessas pequenas empresas criarem jogos como um World of Warcraft ou umFarCry, mas existem grandes empresas utilizando o Unity que criaram jogosimpressionantes. 5
  • 9. Capítulo 1: IntroduçãoUm deles é o MMORPG mais conhecido desenvolvido com o Unity3D é oFusion Fall, http://www.fusionfall.com, da Cartoon Network, ele é um jogo paraweb com visual de desenho animado, imagem 4. Para desenvolver esse tipo dejogo é necessário utilizar a licença profissional, a qual não é gratuita, mas aquiserve como exemplo de um jogo grande, para centenas de jogadores. Parajogos com poucos jogadores, cerca de 12, a versão gratuita é suficiente. Imagem 4 - Fusion Fall ( Web MMORPG )Além disso, existem licenças do programas, não gratuitas, que permitemdesenvolver jogos para o vídeo Nintendo Wii, como é o caso do JumpStart(http://jumpstart.com/), imagem 5, e para iPhone, Zombieville, imagem 6. Ojogo 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 licença para que se possa publicar osjogos também para o Xbox 360, assim, se você criar um jogo que façasucesso, você tem a possibilidade de publicar para diversas outrasplataformas. Imagem 5 - JumpStart para Nintendo Wii 6
  • 10. Capítulo 1: Introdução Imagem 6 - Zombieville (iPhone)1.4 Um avisoOs jogos apresentados neste capítulo foram desenvolvidos por profissionaisque trabalham neles durante muito tempo e já possuem uma grandeexperiência na área de desenvolvimento de jogos. Quando você começar adesenvolver, não fique frustrado se seu jogo não parecer tão bom ou nãoconseguir criar uma funcionalidade parecida com as dos jogos citados, com otempo você aprenderá a desenvolver jogos cada vez melhores e quem sabeum dia faça parte do time de desenvolvimento de um grande jogo.Outra a coisa a ser lembrada é que a versão gratuita da engine não permite odesenvolvimento de jogos para iPhone ou para o Nintendo Wii, apenas paraWindows, MAC e para internet, mas nada impede de você comprar uma licençapara desenvolver para essas plataformas após você desenvolver um jogo desucesso para Windows, por exemplo, e comprar essas licenças com o dinheiroobtido para ganhar mais dinheiro. Mas isso não é um problema para aquelesque desejam apenas desenvolver para Windows e tem o desenvolvimento dejogos apenas como um hobby.1.5 Programas auxiliaresAlém do Unity3D existem outros programas auxiliares para o desenvolvimentode um jogo, segue aqui uma lista desses programas, todos são gratuitos: • Blender: Ferramenta para modelagem e animação de objetos 3D. • Audacity: Editor de audio open source. • Gimp: Editor de imagens. 7
  • 11. Capítulo 1: Introdução • Inkscape: Para criação de desenhos. • Melody Raiser: Programa de geração de música procedural. • SFXR: Programa de geração de efeitos sonoros.Não é o enfoque desta apostila detalhar o funcionamento desses programas,você só precisa saber que eles serão necessários caso você queira criar seuspróprios modelos, animações, músicas e tudo mais.1.6 Instalando o Unity no WindowsBaixe o Unity, http://unity3d.com/unity/download/, após terminar o download,execute o instalador.A seguinte tela irá aparecer:Clique em “Next”. 8
  • 12. Capítulo 1: IntroduçãoLeia o acordo de licença e, se concordar, clique em “I Agree” para ir para apróxima tela. 9
  • 13. Capítulo 1: IntroduçãoClique em “Next”. 10
  • 14. Capítulo 1: IntroduçãoEscolha o local da instalação e clique em “Install”. 11
  • 15. Capítulo 1: IntroduçãoAguarde a instalação finalizar.Clique em “Finish”, o Unity será executado. 12
  • 16. Capítulo 1: IntroduçãoClique em “Register”.Selecione Internet Activation e clique em “Avançar”. 13
  • 17. Capítulo 1: IntroduçãoEspere o programa se conectar ao servidor e abrir seu navegador:Clique na página que foi aberta pelo navegador em “Free”. 14
  • 18. Capítulo 1: IntroduçãoPronto! Agora você poderá utilizar a versão gratuita do Unity por tempoindeterminado, porém a versão pro por apenas 30 dias. 15
  • 19. Capítulo 1: IntroduçãoClique em “Concluir”. E abra o Unity novamente.No próximo capítulo farei uma breve introdução à interface do Unity, aosprincipais conceitos envolvendo programação 3D e uma descrição dasprincipais palavras relacionadas a esse tipo de programação. 16
  • 20. Capítulo 2: Principais conceitos Capítulo 22 Principais conceitosE ste capítulo apresenta uma breve introdução ao ambiente de desenvolvimento do Unity3D assim como alguns dos vários conceitos envolvidos na área de programação de jogos 3D. O objetivo destecapítulo é tornar o leitor mais familiar com o uso do Unity3D e com os principaistermos encontrados na área, pois existem muitas pessoas com poucaexperiência na área e que costumam ficar confusas com eles. Boa parte do queestá neste capítulo está disponível na própria documentação do Unity, porémem inglês.2.1 O ambiente do Unity3DAntes de continuar lendo este tutorial, recomendo que instale o programa doUnity3D (http://unity3d.com/unity/download/) e execute. Para aqueles que estãoabrindo o programa pela primeira vez ele abrirá o projeto Tropical Paradise porpadrão, imagem 7. 17
  • 21. Capítulo 2: Principais conceitos Barra de Ferramentas / Menu Hierarquia Inspetor Cena / Jogo Projeto Imagem 7 - Tela inicial do UnityO Unity possibilita ao usuário escolher o lugar que cada elemento do programairá ficar, porém o Unity possui alguns layout pré-configurados, o layout usadona imagem é o padrão, se o seu programa está configurado com um layoutdiferente você pode mudá-lo na Barra de ferramentas-> Window->Layouts->Revert Factory Settings. Essa tela é composta dos seguintes elementos:2.1.1 Visão 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, vídeo, imagens, etc) do projeto. Tudo o que tem nessa pasta, é mostrado na visão de projeto. Se você clicar com o botão do direito do mouse em alguma dessas Assets, você poderá escolher a opção Reveal in Explorer, que abrirá a pasta que contém o arquivo. Atenção: não 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 visão 18
  • 22. Capítulo 2: Principais conceitosde projeto ou utilizar o comando na barra de ferramentas Assets -> ImportNew Asset. O arquivo ficará pronto para ser usado no projeto.As cenas do jogo também ficam nessa pasta. Cada cena representa um leveldo jogo. O Unity carrega por padrão a cena Islands.unity, para criar uma novaaperte ctrl+n ou vá na Barra de Ferramentas->File->New Scene. Para salvar acena 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 visão do projeto e use o menu Create, ou clique com o botão 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 HierarquiaA visão da hierarquia da cena mostra todos oselementos presentes na cena, cadaGameObject. Alguns desses objetos sãoinstância diretas de Assets,m tais comomodelos do Blender, outros são Prefabs, ouseja, objetos personalizados, uma mistura demodelos com scripts e outras coisas, que irãocompor boa parte dos jogos do Unity.Você pode clicar e arrastar objetos paramudar a hierarquia deles, ou seja, organizá-los como se fossem pastas, objetos que estãodentro de outro objetos são filhos desteobjeto, o objeto que contém esses filhos échamado de pai. Um objeto filho herdará omovimento, rotação e escala de seu pai.Essa informação é muito importante, poisvocê deverá ficar atento a este fato quando começar a programar seu jogo. 19
  • 23. Capítulo 2: Principais conceitosVocê pode expandir ou contrair o objeto pai para ver quais são seus filhos semafetar com isso o jogo.Dois objetos sem pais Um objeto sendo pai de outro2.1.3 Menu de Topo Imagem 8 - Menu de TopoO menu de topo consiste em cinco controles básicos. Cada um relacionado apartes diferente do editor. Transform Tools – ferramenta utilizada na visão da cena. Transform Gizmo Toggles -- afeta o que a visão da cenamostra. Play/Pause/Step Buttons -- used with the Game Viewutilizado para executar/pausar/encerrar o jogo. Layers Drop-down -- View controla quais objetos serãomostrados na cena. Layout Drop-down -- controla a disposição de todas as visões. 20
  • 24. Capítulo 2: Principais conceitos2.1.4 Visão da Cena Imagem 9 - Visão da CenaA visão da cena é o lugar onde você pode organizar a disposição dos objetosna cena do jogo. Você pode selecionar e mudar de posição os jogadores, acâmera, os inimigos e todos os outros GameObjects, além de poder mudar aescala deles, ou seja, o tamanho desses objetos. Esse editor de cena é umadas ferramentas mais importantes do Unity, então você deve aprender a mexercom ele. Para selecionar um objeto basta clicar nele na visão de cena ou navisão de hierarquia, para focar o objeto basta apertar a tecla “f” na visão decena.2.1.5 Posicionamento de objetosAo selecionar algum objeto você pode utilizar a Transform Tools, , para mudar sua posição (translate tool), rotação (rotate tool)ou tamanho (scale tool). 21
  • 25. Capítulo 2: Principais conceitos2.1.6 Scene Gizmo No canto superior direito da visão da cena está o Gizmo da cena. Ela mostra a orientação da câmera da cena e possibilita você mudar rapidamente a orientação da mesma, basta clicar em algum de seus vértices ou no centro para habilitar uma visão em perspectiva da cena, se segurar o shift enquanto clica no centro doGizmo, você habilita a visão isométrica.Visão em perspectiva.Visão isométrica. Os objetos não ficam menores com a distância aqui! 22
  • 26. Capítulo 2: Principais conceitos2.1.7 Barra de controle da cenaO primeiro menu drop-down é para escolher o modo de desenho. A mudançano modo de desenho não terá efeitos no jogo quando ele for publicado.Draw Mode drop-downO Segundo é o modo de renderização. Também não terá efeito no jogo apóspublicado.Render Mode drop-downOs outros dois botões são relacionados à iluminação da cena e o segundo aapresentação de skybox, elementos da GUI e outras coisas na visão da cena.2.1.8 Visão de jogo Imagem 10 - Visão de jogo 23
  • 27. Capítulo 2: Principais conceitosA visão de jogo é renderizada através da câmera dentro do jogo. Elarepresenta como seu jogo ficará quando for publicado.2.1.9 Play ModeUse estes botões par controlar a visão de jogo. Aperte o play para iniciar ojogo, se apertar play novamente o jogo é encerrado, para pausar o jogo apertepause.2.1.10 Barra de controle da visão de jogoO primeiro menu drop-down controla a escala, o segundo maximize a telaquando o jogo começar, o terceiro mostra os Gizmos da cena e o quarto asestatísticas do jogo, tais como frame rate e número de polígonos na cena. Imagem 11 - Estatística do jogo 24
  • 28. Capítulo 2: Principais conceitos2.1.11 Inspetor Jogos feitos no Unity são compostos de muitos GameObjects que contém modelos, scripts, som, ou outros elementos gráficos, tais como luz. O inspetor mostra detalhadamente as informações sobre o GameObject selecionado, incluindo todos os componentes pertencentes a este objeto. Nessa visão você pode modificar os valores das propriedades desses componentes que o GameObject possui. Toda propriedade mostrada no inspetor pode ser modificada. Até variáveis 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 não é possível modificar valores de variáveis enquanto o jogo está em execução. 25
  • 29. Capítulo 2: Principais conceitosAdicionando componentes através do menu de componentes Clicando com o botão direito do mouse no título do componente na visão do inspetor, aparece uma lista de opções onde você pode remover o componente do GameObject. 26
  • 30. Capítulo 2: Principais conceitosUse o menu drop-down de Layer paraassociar um layer de renderização a seuGameObject. Utiliza o menu drop-downde Tag para associar uma Tag a seuGameObject. Você também pode mudaro nome de seu GameObject através doinspetor.2.1.12 Barra de StatusA barra de status está no canto inferior da tela e ela mostra erros decompilação e mensagens de debug. Se existe algum problema no seu jogo,ficar de olho nessa barra é o melhor caminho, você pode dar um clique duplocom o mouse para mostrar o console com as mensagens da barra de status.2.1.13 ConsoleSe você der um clique duplo na barra de status ou escolhendo Barra deFerramentas->Window->Console, aparecerá o Console. 27
  • 31. Capítulo 2: Principais conceitos Imagem 12 - ConsoleO Console mostra mensagens de erros, warnings e textos de debug. Vocêenviar suas próprias mensagens para o console utilizando Debug.Log() ouDebug.Error() em seus código.2.2. Sistema de coordenadas 3DNesta seção serão descritos alguns elementos do sistema de coordenadas 3D.2.2.1. O plano cartesianoUma das formas de descrever a posição de um ponto no espaço é representá-lo em umplano cartesiano. Para representar um ponto em duas dimensões, definimos o sistema decoordenadas como sendo composto por dois eixos, x e y, dispostos ortogonalmente, quedividem o plano em quatro quadrantes. O eixo x é denominado o eixo das abscissas e oy o das ordenadas. Esses eixos são divididos em unidades contadas a partir do ponto deorigem do plano, o ponto de intersecção entre os dois eixos, que servem para nos daruma idéia de distância, o que chamamos de coordenadas, assim, um ponto nesse plano érepresentado por um par de coordenadas, x e y, que representa a distância ao longo decada 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 distância em relação ao ponto de origemdo plano ao longo do eixo x, e seis unidades de distância em relação ao ponto de origemdo plano ao longo do eixo y. 28
  • 32. Capítulo 2: Principais conceitos O plano cartesiano 2DPara representar o espaço em três dimensões, adicionamos o eixo z ao sistema decoordenadas, esse eixo passa pelo ponto de origem do sistema de coordenadas erepresenta a profundidade do ponto. A figura 2 mostra como representar o eixo z noplano. O plano cartesiano com os eixos x, y e z2.2.2. Coordenadas locais e globaisComo foi visto na seção anterior, a posição de um ponto pode ser representado emtermos de três variáveis, x,y e z. Por ponto, podemos entender um objeto no espaço. Aposição global de um objeto no espaço é representada em relação à origem do plano. Àsvezes é necessário representar a posição de um objeto a outro, assim dizemos que todoobjeto tem seu próprio ponto de origem e quando desejamos representar a posição deum objeto em relação a outro, dizemos que estamos utilizando coordenadas locais doobjeto de referência. A figura 3 mostra a diferença entre coordenadas locais e globais. 29
  • 33. Capítulo 2: Principais conceitos Coordenadas locais e globais2.2.3. Vetores Vetores são segmentos de reta usados para representar direção (reta suporte dosegmento orientado), intensidade (valor numérico) e sentido (orientação do segmento dereta) no plano cartesiano. A figura 4 mostra a diferença entre ponto e vetor. Vetores,assim como pontos, não se limitam as duas dimensões e podem ser representados noespaço 3D. Através do uso de vetores é possível atribuir representar além da posição deum objeto no espaço, a sua direção. 30
  • 34. Capítulo 2: Principais conceitos Diferença entre ponto e vetor2.2.4. Quaterniões e rotaçõesPara realizar a rotação de objetos no espaço tridimensional são utilizados quaterniões.Para representar a direção que um objeto aponta no espaço não basta apenas representarsua posição, é necessário atribuir um ângulo a ela. Em jogos quando um objeto é criado,é definida a sua posição e um ângulo inicial a ele. Quando desejamos fazer algumarotação nesse objeto, realizamos com base em sua posição e seu ângulo atual, ou seja,em seu quaternião.2.2.5. RenderizaçãoRenderização é o ato de criar imagens 2D dada uma descrição geométrica de um mundotridimensional e uma câmera virtual que especifica a perspectiva que o mundo estásendo visto.2.2.6. CâmerasCâmeras em jogos servem para representar o comportamento dos olhos em um sistemaem três dimensões. Através dela são determinados quais objetos devem aparecer na telae como eles devem ser mostrados. Elas podem ser posicionadas em qualquer lugar noespaço, possuem uma direção e um campo de visão, ou Field of Vision (FoV). Essecampo de visão pode ser interpretado como uma pirâmide invertida com origem noponto de origem da câmera e com direção determinada pela direção da câmera, assim,os pontos mostrados na tela são os que estão dentro dessa pirâmide.Quando limitamos a distância do campo de visão, estamos especificando uma distânciamáxima que um objeto deve estar do ponto de origem da câmera para que ele sejamostrado na tela, desde que ele esteja dentro do campo de visão da câmera. Também épossível especificar uma distância mínima que os objetos deverão estar da câmera paraque eles sejam mostrados na tela.As figuras 5 e 6 ilustram o funcionamento de uma câmera, tudo o que está dentro doespaço delimitado pelo near plane e pelo far plane serão renderizados. 31
  • 35. Capítulo 2: Principais conceitos A câmera Os objetos vermelhos não são renderizados2.2.7. Representação de formasPara representar formas em três dimensões são utilizados polígonos, em jogosgeralmente são utilizados triângulos, ou faces, que são representados por três pontosinterligados por vértices. A combinação de polígonos permite a construção de formasmais complexas, conhecidas como Meshes. É através desses dados que são feitos oscálculos de detecção de colisões entre um objeto e outro no espaço.2.2.8. MateriaisMateriais servem para definir a aparência de um modelo após renderizados. Materiaissão cores ou texturas, que em conjunto com um script de renderização, conhecido comoshader, determina a aparência de um objeto quando visualizado na tela.2.3. FísicaNesta seção serão descritos o que são corpos rígidos e detecção de colisão.2.3.1. Corpos rígidosCorpos rígidos são objetos que, durante o jogo, são afetados pelas leis da física, ou seja,os motores de física realizam cálculos para tornar o movimento desses objetos realistas.Corpos rígidos podem possuir as seguintes propriedades: • Massa; • Gravidade; • Velocidade; • Atrito. 32
  • 36. Capítulo 2: Principais conceitos2.3.2. Detecção de colisão A detecção de colisões entre objetos durante o jogo também é deresponsabilidade do motor físico do jogo. Adicionando um elemento ao objetodenominado collider, o objeto passa a se comportar de um modo diferente quandoalgum objeto colide com ele, respondendo a colisão, normalmente alterando avelocidade e direção de seu movimento.2.3 ConclusãoCom as informações deste capítulo espera-se que o leitor se familiarize com ainterface do Unity e com algumas palavras e conceitos envolvendoprogramação de jogos 3D.Espera-se que o leitor teste o projeto de demonstração do Unity, ou seja, mudea posição dos objetos, rode o jogo, mude as variáveis de alguns GameObjectsenquanto o jogo está rodando e perceba os resultados das mudanças, ou seja,fuce bastante mesmo no Unity até se sentir a vontade com a interface. Tentaentender o que cada visão representa e como funciona o mouse naquela visãoe o que seus botões fazem.No próximo capítulo farei uma introdução a programação de jogos com o Unitye o leitor criará seu primeiro programa. 33
  • 37. Capítulo 3: Introdução ao Java Script Capítulo3 Introdução ao Java Script 3O Unity permite aos desenvolvedores escolher entre três tipos de linguagem deprogramação diferentes: Java Script, C# e Boo. Dentre estas, por ser a maissimples, esta apostila adotou a linguagem Java Script para criar os códigosresponsáveis por controlar o funcionamento do jogo.A partir deste ponto, assume-se que o leitor está familiarizado com a interfacedo Unity.3.1 Seu primeiro programaCrie um novo projeto, Barra de Ferramentas->File->New Project.Aparecerá uma caixa de dialogo onde você poderá escolher o local onde seuprojeto será criado em seu computador e os pacotes contendo um conjunto deAssets a serem importados para o projeto durante a criação do projeto.Cheque a opção Standard Assets.unityPackage, o local do seu projeto e onome dele e clique no botão Create.Um projeto totalmente novo será criado, esse processo pode demorar umpouco.Você verá uma tela mais ou menos assim: 34
  • 38. Capítulo 3: Introdução 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 visão de cena. • Selecione a câmera na visão de hierarquia e vá em Barra de Ferramentas->GameObject->Move To View.Você terá uma cena mais ou menos assim: 35
  • 39. Capítulo 3: Introdução ao Java ScriptMude a posição da câmera até que ela focalize o cubo, nesse caso clique natranslate tool e mude a posição da câmera pelo eixo z, azul, aperte o play paraver como ficaria a cena durante o jogo.Você pode mudar o layout clicando e arrastando a aba Game até a parteinferior da visão de cena, faça isso até que o layout e a posição da câmera o docubo fique do seguinte modo:Quando você apertar o play não verá apenas uma tela azul, verá um quadradopreto no centro da tela. Isso significa que você já aprendeu o básico dainterface do Unity, agora estamos pronto para começar a aprender um poucode Java Script.Na visão 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 navisão de projetos. Um editor de script será aberto e terá o seguinte conteúdo: 36
  • 40. Capítulo 3: Introdução ao Java Scriptfunction Update () {} Código 1 - Script inicialMude o script e escreva o seguinte código:function Update () { print("Ola");} Código 2 – Exemplo OlaClique e arraste o script da visão de projeto para a visão de hierarquia noobjeto Cubo. Aperte o play.Você verá na barra de status, na parte inferior, a seguinte mensagem: Ola 37
  • 41. Capítulo 3: Introdução ao Java ScriptAperte o play novamente para encerrar o jogo. Dê um duplo clique na barra destatus 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 câmera para que ela focalize oCubo é intuitiva, funciona como na vida real, onde quando se deseja tirar umafoto, é necessário posicionar a câmera em um determinado local e mirar ela emum objeto para que este objeto apareça na foto. Foi o que fizemos. Vocêpoderia utilizar as outras ferramentas de posicionamento, tais como a rotatetool para rotacionar a câmera em conjunto com a translate tool para que oobjeto fosse visto de um outro ângulo.É necessário prestar atenção no campo de visão da câmera que érepresentado na visão de cena como um campo com arestas brancas. Tudo oque 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. Essescript tem uma função chamada Update() que é executada repetidamente eautomaticamente pelo Unity em intervalos curtos de tempo, várias vezes porsegundo, depende da quantidade frames por segundo do jogo, ela é executadauma vez a cada frame. 38
  • 42. Capítulo 3: Introdução ao Java ScriptQuando um script com essa função é colocado em um GameObject. Se vocêcolocar esse script em mais de um GameObject, cada GameObject executaráseu próprio script, executando a função Update() desse script.Não são todas as funções que são executadas automaticamente, porém sevocê colocar uma função em um script com o nome de Update(), essa funçãoserá executada automaticamente pelo Unity. O comando print exibe um textono Console e na barra de status.Antes de explicar detalhadamente como o Java Script funciona, vamos a maisum teste, mude o código do script Ola para:function Update () { transform.Rotate(0, 5*Time.deltaTime, 0);} Código 3 – Exemplo gira cuboAperte play e perceba que o cubo começa a girar ao redor do eixo y! Ou seja, afunção transform.Rotate(0, 5*Time.deltaTime, 0) fez com que ao invés doprograma mostrar um texto na barra de status, faz o cubo girar. Agora é horade entender como funciona a linguagem de programação Java Script, que seráresponsável por controlar todos os elementos dos jogos feitos com o Unity.3.2 Variáveis e tipos de dadosNa escola aprendemos a representar valores através de variáveis,principalmente nas aulas de matemática. Por exemplo, quando eu digo que umnúmero x vale 5 e digo que um número y é igual a x+1, sabemos que o sesubstituirmos o x do x+1 por 5, que é o valor de x concluímos que y é igual a5+1, ou seja, 6. Assim:x=5;y=x+1 => y=5+1 => y = 6;Para declarar variáveis em Java Script, fazemos assim:var x = 5;var y = x+1;Vá no script Ola e mude-o para: 39
  • 43. Capítulo 3: Introdução ao Java Scriptvar x = 5;function Update () { var y = x+1; print(y);} Código 4 – Exemplo declaração de variávelAperte o play e perceba que a barra de status mostra o valor 6.Nesse caso, x e y são variáveis, ou seja, valores que podem sofrem alteração.Se mudarmos o valor de x para 20 e se y é igual a x+1, então y passará a ser21. Pois y é representado em função de x. Esse é um dos conceitosfundamentais que você deve entender para começar a programar Java Script,representar valores em forma de variáveis. Agora selecione o Cubo na visão de hierarquia e veja que a visão 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 variáveis 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 valorpara a variável, porém valores alterados durante a execução do jogo serãorevertidos para o valor que estava antes da execução. 40
  • 44. Capítulo 3: Introdução ao Java ScriptVoltemos a história de variáveis. Podemos dizer que x é uma variável do tipolaranja e que y também é laranja, então x representa 5 laranjas e y 6 laranjas,quando dizemos isso, estamos especificando um tipo para a variável x,dizemos isso quando desejamos fazer alguma coisa com essas variáveis quesó podem ser feitas se elas forem de um tipo. Nesse caso desejamos fazer umsuco de laranja.O Java Script possui uma série de tipos básicos e cada um serve para algumacoisa, um deles é o tipo String que serve para trabalhar com palavras.Por exemplo, para declarar uma variável do tipo String e atribuir a ela amensagem “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);} Código 5 – Exemplo stringAperte play e veja que o a função print exibe na barra de status o valor damensagem, ou seja, “Minha primeira string”.Como você pode perceber, a função print serve para testar o programa, elapoderá mostrar o valor de qualquer variável que você declarar. A seguirveremos os tipos de variáveis que o Java Script possui, se quiser testar cadatipo, basta alterar o código para que a função print imprima o valor de suavariável, por exemplo, você pode usar print(n), onde n seria o nome davariável do tipo número, você especificar outro nome para sua variável, maslembre-se de corrigir a função print.O Java Script possui os seguintes tipos primitivos: Tipo Descrição Exemplosbyte Inteiro de 8-bit com sinal. var n : sbyte = -2;short Inteiro de 16-bit com sinal. var n : short = -2;int Inteiro de 32-bit com sinal. var n : int = 2;long Inteiro de 64-bit com sinal. var n : long = 2;byte Inteiro de 8-bit sem sinal. var n : byte = 2; 41
  • 45. Capítulo 3: Introdução ao Java Scriptushort Inteiro de 16-bit sem sinal. var n : ushort = 2;uint Inteiro de 32-bit sem sinal. var n : uint = 2;ulong Inteiro de 64-bit sem sinal. var n : ulong = 2;float Número decimal. var f : float = 2.0;double Número decimal duas que pode ter um valor var f : double = maior que o float, usado para números muito 2.0; extensos.boolean Represents a true / false value. Reprenseta var b : boolean = verdadeiro (true) ou falso (falso), true;char Um caracter. var c : char = "c"[0];String Representa um texto ou uma série de var s : String = caracteres. "Hello, world";Cada um deles serve para uma coisa. Você não precisa especificar o tipo desua variável, geralmente você só vai especificar quando você deseja restringircertas operações para trabalham com um determinado tipo ou usar uma funçãoque trabalhará com uma característica que apenas aquele tipo possui, porexemplo se você quer usar números inteiros em sua conta, você deverá usar otipo int ou algum outro que represente apenas número inteiros, como o shortque é para inteiros pequenos.Além dos tipos primitivos definidos na própria linguagem do Java Script,existem os tipos complexos, os quais fazem parte do Unity e você pode criarseu próprio tipo de dado, o que chamamos de classes.Um dos tipos complexos que você utilizará muito é o tipo Array, que representaum conjunto de variáveis. Como nas matrizes e vetores das aulas dematemática.3.3 Declaração de variáveis e palavras reservadasPara declarar uma variável é necessário escrever primeiro a palavra var edepois o nome da variável, toda comando em um Java Script deve serencerrado com um ; (ponto e virgula), vamos declarar uma variável com onome de ano:var ano;Você pode atribuir um valor para uma variável em sua declaração:var ano = 2009;Também é possível especificar um tipo de uma variável em sua declaraçãocolocando : (dois pontos) e o nome do tipo depois do nome, por exemplo, comoano é um número inteiro podemos declarar ele como sendo do tipo int assim:var ano : int = 2009; 42
  • 46. Capítulo 3: Introdução ao Java ScriptO primeiro caractere do nome de uma variável deve ser uma letra ou _(underline), maiúscula ou minúscula, os demais caracteres podem sernúmeros, letras ou o caractere especial _ (underline). Exemplos de nomesválidos para variáveis:Homem, homem2, _homem, mul89_her, bola883, bola, b, c, iiio0__ou, etcExemplos de nomes inválidos para variáveis:9homem, %idade, *ok, .ddd, &hojeUma variável também não pode ter os seguintes nomes pois são palavrasreservadas da linguagem Java Script: • as • float • static • boolean • for • string • break • if • super • byte • in • switch • case • int • this • char • long • true • class • new • typeof • continue • null • uint • default • private • ulong • double • protected • ushort • else • public • virtual • enum • return • void • false • sbyte • whileOu seja, também seria inválida a seguinte variável:var continue;Essas palavras reservadas são os tipos de variáveis e comandos que alinguagem usa para especificar o que o programa deve fazer.3.4 OperadoresVariáveis podem ser utilizadas para realizar operações, para isso existem osoperadores, os quais já vimos a alguns deles nas aulas de matemática e issofacilita saber para que servem, um exemplo é o operador + que realiza adição:var x = 2 + 4;Nesse caso o operador + fará uma soma de 2 com 4, o que resulta em 6, eesse será o valor de x. Também poderíamos fazer:var n1 = 2;var n2 = 4;var x = n1 + n2; 43
  • 47. Capítulo 3: Introdução ao Java ScriptO operador mais também tem uma função especial com variáveis do tipo string,ele permite juntar duas strings em uma só:var palavra = “Bom ” + “dia”Faz com que a variável palavra tenha o valor de “Bom dia”. Também podemosfazer:var p1 = “Bom “;var p2 = “dia”;var palavra = p1 + p2;A tabela a seguir contém os operadores existentes em Java Script e suasaplicações:Operador Função Exemplo Resultado+ Concatena strings. var palavra = “Bom “ + “Bom dia” “dia”;+ Soma dois números. var total = 5 + 6; 11- Subtrai o número da var total = 11 – 3; 8 esquerda pelo da direita.* Multiplica um número var total = 2*5; 10 pelo outro./ Divide o número da var total = 9 / 2; 4.5 esquerda pelo da direita.% Retorna o resto da var total = 9 % 2; 1 divisão.++ Incrementa em 1 o var total = 2; 3 valor da variável. Pode total++; ser usado a direita ou a esquerda da variável.-- Decrementa em 1 o var total = 2; 1 valor da variável. Pode total--; ser usado a direita ou a esquerda da variável.Além dos operadores matemáticos, existem os operadores relacionais, queretornam verdadeiro (true) ou falso (false), ou seja, retorna um valor booleano,dependendo se a expressão é verdadeira ou não:Operador Função Exemplo Resultado< Menor que. 4 < 5; true> Maior que. 4 > 5; false== Igual. 4 == 5; false 44
  • 48. Capítulo 3: Introdução ao Java Script<= Menor ou igual. 4 <= 5; true>= Maior ou igual. 4 >= 5; false!= Diferente. 4 != 5 trueTambém podemos combinar duas expressões relacionais através dosoperadores lógicos &&, que verifica se as duas expressões são verdadeiras, eo || que verifica se uma das duas expressões é verdadeira.Exemplos para o operador lógico E, &&:Exemplo Resultado4 < 5 && 4 > 5 É falso, pois se uma das expressões for falsa, o resultado será falso, como 4 > 5 é falso, então essa expressão retornaria false.4 < 5 && 4 != 5 É verdadeiro, pois 4 é menor que 5 e 4 é diferente de 5.Exemplos para o operador lógico OU, ||:Exemplo Resultado4 < 5 || 4 > 5 É verdadeiro, pois se uma das expressões for verdadeira, o resultado será verdadeiro, e como 4 < 5 é verdadeiro, essa expressão retornaria true.4 > 5 || 4 == 5 É falso pois as duas expressões são falsas.Por último existem os operadores de atribuição, que, como o próprio nomesugere, são utilizados na atribuição de um valor a uma variável:Operador Função Exemplo Resultado= Atribui um valor a uma var total = 6; “Bom dia” variável.+= Soma o valor atual da var total = 6; 11 variável com o valor de total +=6 atribuição.-= Subtrai o valor atual da var total = 11; 8 variável com o valor de total -= 3; atribuição.*= Multiplica o valor atual var total = 2; 10 da variável pelo valor total *= 5; de atribuição./= Divide o valor atual da var total = 9; 4.5 variável pelo valor de total /= 2; atribuição.%= Retorna o resto da var total = 9; 1 divisão do valor atual total %= 2; da variável pelo valor de atribuição. 45
  • 49. Capítulo 3: Introdução ao Java Script3.5 Comandos condicionaisExistem alguns comandos em Java Script que controlam a execução de umaparte do código de acordo com determinada condição. São os comandoscondicionais.Comando if (se):Executa um determinado conjunto de ações se uma determinada condição éverdadeira. Ou seja, se (if) determinada condição é verdadeira, então realizeas seguintes ações.Sintaxe:if ( condição ){ Ação1; Ação2; .... AçãoN;}Se deseja condicionar a execução de apenas uma ação ao comando if, não énecessário colocar os {}:if (condição) Ação;Exemplo:var x = 5;function Update () { if ( x==5 ){ print(“Verdade”); }} Código 6 – Exemplo ifComando else (senão): 46
  • 50. Capítulo 3: Introdução ao Java ScriptComplemento do comando if, funciona como um senão, ou seja, quandousamos o if, dizemos, Se (if) determinada condição é verdadeira, então, realizeum determinado conjunto de ações, senão (else), realize outro conjunto deações.Sintaxe:if ( condição ){ Ação1; Ação2; .... AçãoN;}else{ Ação1; Ação2; .... AçãoN;}Também é possível condicionar apenas uma ação a uma condição senão,como no if:if (condição) Ação;else Ação2;Exemplovar x = 5;function Update () { if ( x>100 ){ print(“Verdade”); 47
  • 51. Capítulo 3: Introdução ao Java Script } else { print(“Mentira”); }} Código 7 – Exemplo elseComando while (enquanto):Executa um conjunto de ações repetidamente enquanto uma determinadacondição for verdadeira.Sintaxe:while ( condição ){ Ação1; Ação2; .... AçãoN;}Exemplovar x = 0;function Update () { while ( x<100 ){ print(“x vale ”+x); x++; }} 48
  • 52. Capítulo 3: Introdução ao Java Script Código 8 – Exemplo whileComando for (para):Um while incorpado, declara a variável de controle, a condição de parada e ocomo o incremento da variável de controle será feito tudo de uma vez.Sintaxe:for ( iniciaçãoDaVariável; condição; incrementoDaVariável ){ Ação1; Ação2; .... AçãoN;}Exemplo:function Update () { for (var x=0; x < 100; x++ ){ print(“x vale ”+x); }} Código 9 – Exemplo forComando break (interromper) e contine:São utilizados dentro de um comando while ou for, o break quebra a repetiçãoe continue executando os códigos que estão depois do comando while ou forem questão, e o continue volta imediatamente para o inicio da repetição.function Update () { for (var x=0; x < 100; x++ ){ print(x); 49
  • 53. Capítulo 3: Introdução ao Java Script if ( x ==50) break; }} Código 10 – Exemplo break3.6 Objetos, propriedades e métodosTodo jogo criado pelo Unity é composto por objetos, por hora basta saber que oUnity cria objetos durante a execução do jogo, por exemplo, quando o jogo éiniciado o Unity cria o objeto Time que possui informações sobre o tempo dejogo. Modelos, a câmera, terrenos, etc. Também são considerados objetos,como na vida real, dizemos que tudo que existe são objetos, incluindo nósmesmos. Todo objeto tem propriedades, ou seja atributos, por exemplo, umhomem tem olhos. O objeto Time tem o atributo deltaTime que retorna adiferença de tempo entre uma atualização e outra do programa.Para fazer referencia a um determinado atributo de um objeto usamos aseguinte sintaxe, objeto ponto atributo:<Objeto>.<Atributo>;No caso, para acessar o atributo deltaTime do objeto Time, faríamos:Time.deltaTime;Exemplo:var x:float = 0;function Update () { x = Time.deltaTime; print(x);} Código 11 – Exemplo breakObjetos também possuem funções, ou métodos, que são acessados demaneira similar aos atributos, ou seja, objeto ponto função(): 50
  • 54. Capítulo 3: Introdução ao Java Script<Objeto>.Função();Na vida real, os seres vivos tem a função de se reproduzir entre outras. NoUnity, existe um objeto matemático que tem várias funções, entre elas uma deretornar o valor da raiz quadrada de um número, o objeto é o Mathf e a funçãoé Sqrt que tem como parâmetro o número que desejamos saber a raizquadrada:Exemplo para calcular a raiz quadrada de 10:print(Mathf.Sqrt(10));Para criar uma função usamos a seguinte sintaxe:function NomeDaFunção( Parâmetros ){ Ação1; Ação2; Ação3;}Por exemplo, para criar uma função que multiplica um número pelo outro eimprime o valor na tela faríamos o seguinte:function multiplica( numero1, numero2 ){ var resultado = numero1 * numero2; print(resultado);}Segue um exemplo de um script que cria e usa essa função:function multiplica( numero1, numero2 ){ var resultado = numero1 * numero2; print(resultado); 51
  • 55. Capítulo 3: Introdução ao Java Script}function Update () { multiplica(10,20);} Código 12 – Exemplo breakVocê também pode utilizar funções para atribuir valores a variáveis, para issovocê deve especificar que tipo de dado a função retorna e especificar dentrodela o valor retornado com um comando return, repare nas mudanças docódigo 12 para o código 13:function multiplica( numero1, numero2 ):float{ var resultado = numero1 * numero2; return resultado;}function Update () { var x = multiplica(6,7); print(x);} Código 13 – Exemplo break3.7 ComentáriosExiste duas formas de inserir comentários em seu código no Java Script, ocomentário de uma única linha que é precedido por //, exemplo: 52
  • 56. Capítulo 3: Introdução ao Java Script// esse é um comentário de uma linhaOutra forma é o comentário de várias linhas que começa com /* e termina com*/, exemplo:/*Este comentário tem várias linhasA gente escreve, escreve, escreveE quando vê já tem comentário suficienteEncerra os comentários*/3.8 Isso não é tudoExistem mais conceitos em Java Script que os apresentados nesse capítulo,tais como criação de classes, modificadores de atributos, etc. Conforme acomplexidade de um jogo avança, será necessário o leitor pesquisar maissobre Java Script. Tentarei manter os exemplos desse livro o mais simplespossível para tornar fácil o entendimento de como a Unity funciona, espera-seque o leitor se torne aos poucos mais e mais familiarizado com o Unity e com aprogramação em Java Script. Espera-se que até o final da apostila o leitor setorne apto a criar programas mais complexos, ou seja, que usem todos osconceitos apresentados nesse capítulo. 53
  • 57. Capítulo 4: Terrenos Capítulo 44 TerrenosUma das vantagens de se utilizar um motor de jogo é a possibilidade derealizar vários trabalhos com ferramentas gráficas, podendo visualizar o queestá fazendo. O editor de level do Unity possui uma ferramenta para edição deterrenos que permite aos desenvolvedores paisagens ricas em detalhes de ummodo simples e rápido comparado com o uso de modeladores 3d, tais comoBlender e 3D Studio Max, para a realização dessa tarefa.Esse capítulo é uma tradução da documentação do Unity da parte que explicao processo de criação de terrenos.4.1 Utilizando Terrenos4.1.1 Criando um novo TerrenoUm novo terreno pode ser criado a partir da Barra de Ferramentas->Terrain->Create Terrain. Isto adicionará um Terreno para sua visão de projeto e para avisão de hierarquia.Seu novo terreno irá se parecer com a seguinte imagem: 54
  • 58. Capítulo 4: TerrenosUm novo terreno na visão da cenaSe você preferir um terreno com um tamanho diferente, vá em Barra deFerramentas->Terrain->Set ResolutionAlterando a resolução do terrenoNa imagem acima, existem variáveis 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 resolução do HeightMap para o terreno selecionado. • Detail Resolution: A resolução do mapa que controla a grama e os meshes de detalhes. Por questões 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 resolução da textura de composição usada no lugar da divisão do mapa a certas distâncias. 55
  • 59. Capítulo 4: Terrenos4.1.2 Navegando pelo terrenoTerrenos funcionam um pouco diferente dos outros GameObjects. A coisa maisnotável é que não é possível mudar a posição dos terrenos pelo editor de cena.Ao invés disso, você pode utilizar pincéis para pintar e manipular seu terreno.Se você deseja mudar a posição do terreno, você o faz mudando os valoresdas propriedades “Transform”, no inspetor, mas não é possível mudar suaescala ou rotacioná-lo.Quando o terreno estiver selecionado na visão de hierarquia, você pode apertara tecla “F” para centralizá-lo no editor da cena.4.1.3 Editando o TerrenoQuando o terreno está selecionado, aparecerá no inspector as ferramentas deedição de terreno.A Ferramenta de Edição de Terrenos no Inspetor 56