Академический Документы
Профессиональный Документы
Культура Документы
Uma introduo
Unity3D
Uma introduo
Voc pode:
Contedo
Lista de Imagens ............................................................................................................... 3 Lista de cdigos ................................................................................................................ 3 1 Introduo ...................................................................................................................... 3 1.1 O que o Unity 3D ................................................................................................. 3 1.2 Unity3D no Brasil ................................................................................................... 4 1.3 Exemplos de jogos .................................................................................................. 5 1.4 Um aviso ................................................................................................................. 7 1.5 Programas auxiliares............................................................................................... 7 1.6 Instalando o Unity no Windows ............................................................................. 8 2 Principais conceitos ..................................................................................................... 17 2.1 O ambiente do Unity3D........................................................................................ 17 2.1.1 Viso de Projeto ......................................................................................... 18 2.1.2 Hierarquia .................................................................................................... 19 2.1.3 Menu de Topo ............................................................................................ 20 2.1.4 Viso da Cena ............................................................................................ 21 2.1.5 Posicionamento de objetos ...................................................................... 21 2.1.6 Scene Gizmo .............................................................................................. 22 2.1.7 Barra de controle da cena ........................................................................ 23 2.1.8 Viso de jogo .............................................................................................. 23 2.1.9 Play Mode ................................................................................................... 24 2.1.10 Barra de controle da viso de jogo ....................................................... 24 2.1.11 Inspetor ..................................................................................................... 25 2.1.12 Barra de Status ........................................................................................ 27 2.1.13 Console ..................................................................................................... 27 2.2. Sistema de coordenadas 3D ................................................................................. 28 2.2.1. O plano cartesiano ........................................................................................ 28 2.2.2. Coordenadas locais e globais ........................................................................ 29 2.2.3. Vetores .......................................................................................................... 30 2.2.4. Quaternies e rotaes .................................................................................. 31 2.2.5. Renderizao ................................................................................................ 31 2.2.6. Cmeras ........................................................................................................ 31 2.2.7. Representao de formas .............................................................................. 32 2.2.8. Materiais ....................................................................................................... 32 2.3. Fsica.................................................................................................................... 32 2.3.1. Corpos rgidos .............................................................................................. 32 2.3.2. Deteco de coliso ...................................................................................... 33 2.3 Concluso ............................................................................................................. 33 3 Introduo ao Java Script ............................................................................................ 34 3.1 Seu primeiro programa ......................................................................................... 34 3.2 Variveis e tipos de dados .................................................................................... 39 3.3 Declarao de variveis e palavras reservadas ..................................................... 42 3.4 Operadores ............................................................................................................ 43 3.5 Comandos condicionais ........................................................................................ 46 3.6 Objetos, propriedades e mtodos .......................................................................... 50 3.7 Comentrios .......................................................................................................... 52 3.8 Isso no tudo ...................................................................................................... 53 4 Terrenos ....................................................................................................................... 54 1
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.
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.
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
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.
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.
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.
Captulo 1: Introduo
1.4 Um aviso
Os jogos apresentados neste captulo foram desenvolvidos por profissionais que trabalham neles durante muito tempo e j possuem uma grande experincia na rea de desenvolvimento de jogos. Quando voc comear a desenvolver, no fique frustrado se seu jogo no parecer to bom ou no conseguir criar uma funcionalidade parecida com as dos jogos citados, com o tempo voc aprender a desenvolver jogos cada vez melhores e quem sabe um dia faa parte do time de desenvolvimento de um grande jogo. Outra a coisa a ser lembrada que a verso gratuita da engine no permite o desenvolvimento de jogos para iPhone ou para o Nintendo Wii, apenas para Windows, MAC e para internet, mas nada impede de voc comprar uma licena para desenvolver para essas plataformas aps voc desenvolver um jogo de sucesso para Windows, por exemplo, e comprar essas licenas com o dinheiro obtido para ganhar mais dinheiro. Mas isso no um problema para aqueles que desejam apenas desenvolver para Windows e tem o desenvolvimento de jogos apenas como um hobby.
Captulo 1: Introduo 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.
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
11
12
13
Captulo 1: Introduo
Captulo 1: Introduo
Pronto! Agora voc poder utilizar a verso gratuita do Unity por tempo indeterminado, porm a verso pro por apenas 30 dias.
15
Captulo 1: Introduo
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
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.
17
Projeto
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:
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.
O menu de topo consiste em cinco controles bsicos. Cada um relacionado a partes diferente do editor. 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
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.
, para mudar sua posio (translate tool), rotao (rotate tool) ou tamanho (scale tool).
21
Viso em perspectiva.
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.
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.
Use estes botes par controlar a viso de jogo. Aperte o play para iniciar o jogo, se apertar play novamente o jogo encerrado, para pausar o jogo aperte pause.
24
2.1.11 Inspetor
Jogos feitos no Unity so compostos de muitos GameObjects que contm modelos, scripts, som, ou outros elementos grficos, tais como luz. O inspetor mostra detalhadamente as informaes sobre o GameObject selecionado, incluindo todos os componentes pertencentes a este objeto. Nessa viso voc pode modificar os valores das propriedades desses componentes que o GameObject possui. Toda propriedade mostrada no inspetor pode ser modificada. At variveis de scripts podem ser modificadas sem modificar o script original. Voc pode mudar essas propriedades enquanto o jogo est rodando para experimentar e encontrar os valores ideais para essas propriedades para seu jogo. Esta uma funcionalidade muito importante, pois na maioria dos casos de desenvolvimento de jogo no possvel modificar valores de variveis enquanto o jogo est em execuo.
25
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.13 Console
Se voc der um clique duplo na barra de status ou escolhendo Barra de Ferramentas->Window->Console, aparecer o Console.
27
Imagem 12 - Console
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.
28
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.
2.2.3. Vetores
Vetores so segmentos de reta usados para representar direo (reta suporte do segmento orientado), intensidade (valor numrico) e sentido (orientao do segmento de reta) no plano cartesiano. A figura 4 mostra a diferena entre ponto e vetor. Vetores, assim como pontos, no se limitam as duas dimenses e podem ser representados no espao 3D. Atravs do uso de vetores possvel atribuir representar alm da posio de um objeto no espao, a sua direo.
30
2.2.5. Renderizao
Renderizao o ato de criar imagens 2D dada uma descrio geomtrica de um mundo tridimensional e uma cmera virtual que especifica a perspectiva que o mundo est sendo visto.
2.2.6. Cmeras
Cmeras em jogos servem para representar o comportamento dos olhos em um sistema em trs dimenses. Atravs dela so determinados quais objetos devem aparecer na tela e como eles devem ser mostrados. Elas podem ser posicionadas em qualquer lugar no espao, possuem uma direo e um campo de viso, ou Field of Vision (FoV). Esse campo de viso pode ser interpretado como uma pirmide invertida com origem no ponto de origem da cmera e com direo determinada pela direo da cmera, assim, os pontos mostrados na tela so os que esto dentro dessa pirmide. Quando limitamos a distncia do campo de viso, estamos especificando uma distncia mxima que um objeto deve estar do ponto de origem da cmera para que ele seja mostrado na tela, desde que ele esteja dentro do campo de viso da cmera. Tambm possvel especificar uma distncia mnima que os objetos devero estar da cmera para que eles sejam mostrados na tela. As figuras 5 e 6 ilustram o funcionamento de uma cmera, tudo o que est dentro do espao delimitado pelo near plane e pelo far plane sero renderizados. 31
A cmera
2.2.8. Materiais
Materiais servem para definir a aparncia de um modelo aps renderizados. Materiais so cores ou texturas, que em conjunto com um script de renderizao, conhecido como shader, determina a aparncia de um objeto quando visualizado na tela.
2.3. Fsica
Nesta seo sero descritos o que so corpos rgidos e deteco de coliso.
2.3 Concluso
Com as informaes deste captulo espera-se que o leitor se familiarize com a interface do Unity e com algumas palavras e conceitos envolvendo programao de jogos 3D. Espera-se que o leitor teste o projeto de demonstrao do Unity, ou seja, mude a posio dos objetos, rode o jogo, mude as variveis de alguns GameObjects enquanto o jogo est rodando e perceba os resultados das mudanas, ou seja, fuce bastante mesmo no Unity at se sentir a vontade com a interface. Tenta entender o que cada viso representa e como funciona o mouse naquela viso e o que seus botes fazem. No prximo captulo farei uma introduo a programao de jogos com o Unity e o leitor criar seu primeiro programa.
33
Captulo
3
3 Introduo ao Java Script
O Unity permite aos desenvolvedores escolher entre trs tipos de linguagem de programao diferentes: Java Script, C# e Boo. Dentre estas, por ser a mais simples, esta apostila adotou a linguagem Java Script para criar os cdigos responsveis por controlar o funcionamento do jogo. A partir deste ponto, assume-se que o leitor est familiarizado com a interface do Unity.
34
Salve a cena, ctrl+s, escolhe um nome para ela, por exemplo, level1. Crie um Cubo, Barra de Ferramentas->GameObject->Create Other>Cube. Com o Cubo Selecionado aperte f na viso de cena. Selecione a cmera na viso de hierarquia e v em Barra de Ferramentas->GameObject->Move To View. Voc ter uma cena mais ou menos assim:
35
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
function Update () { }
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
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:
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.
Para declarar variveis em Java Script, fazemos assim: var x = 5; var y = x+1; V no script Ola e mude-o para: 39
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:
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.
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
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; var total = 2*5; var total = 9 / 2; var total = 9 % 2; var total = 2; total++; Resultado Bom dia 11 8 10 4.5 1 3
* /
% ++
--
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 Resultado falso, pois se uma das expresses for falsa, o resultado ser falso, como 4 > 5 falso, ento essa expresso retornaria false. verdadeiro, pois 4 menor que 5 e 4 diferente de 5.
4 < 5 && 4 != 5
Exemplos para o operador lgico OU, ||: Exemplo 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.
4 > 5 || 4 == 5
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; var total = 6; total +=6 var total = 11; total -= 3; var total = 2; total *= 5; var total = 9; total /= 2; var total = 9; total %= 2; Resultado Bom dia 11 8 10 4.5 1
45
Cdigo 6 Exemplo if
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
47
Comando while (enquanto): Executa um conjunto de aes repetidamente enquanto uma determinada condio for verdadeira. Sintaxe: while ( condio ) { Ao1; Ao2; .... AoN;
Exemplo
48
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); } }
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.
49
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:
51
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; }
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 */
53
Captulo 4: Terrenos
Captulo
4
4 Terrenos
Uma das vantagens de se utilizar um motor de jogo a possibilidade de realizar vrios trabalhos com ferramentas grficas, podendo visualizar o que est fazendo. O editor de level do Unity possui uma ferramenta para edio de terrenos que permite aos desenvolvedores paisagens ricas em detalhes de um modo simples e rpido comparado com o uso de modeladores 3d, tais como Blender e 3D Studio Max, para a realizao dessa tarefa. Esse captulo uma traduo da documentao do Unity da parte que explica o processo de criao de terrenos.
54
Captulo 4: Terrenos
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
56