Apostila Unity

download Apostila Unity

of 12

Transcript of Apostila Unity

Desenvolvendo jogos com Unity 3D

Prof. Miguel Baggio

2 - Oficina de Desenvolvimento de Jogos Unity 3D - Miguel Angelo Baggio

Sumrio1 2 Introduo ao ambiente UNITY 3D ................................................................................................. 3 Painis do Unity 3D ......................................................................................................................... 3 2.1 2.2 2.3 3 Painel Hierarchy ...................................................................................................................... 3 Painel Project .......................................................................................................................... 5 Painel Inspector ...................................................................................................................... 5

Funes de controle de cmera (modo edio) ............................................................................. 5 3.1 3.2 3.3 3.4 Afastar a viso da cena (zoom) ............................................................................................... 5 Girar a tela............................................................................................................................... 5 Puxar e empurrar a tela .......................................................................................................... 5 Centralizar um objeto (focus) ................................................................................................. 5

4

Criando um Projeto ......................................................................................................................... 5 4.1 Crie um projeto ....................................................................................................................... 5 Criando o plano ............................................................................................................... 6 Criando a luz ou iluminao ............................................................................................ 6 Adicionando movimentao ........................................................................................... 6 Adicionando o personagem (esfera) ............................................................................... 7 Adicionando componentes ............................................................................................. 7 Camera seguindo personagem ....................................................................................... 8 Adicionando mais componentes ao personagem........................................................... 8 Adicionando bolas de fogo.............................................................................................. 9 Importando objetos ...................................................................................................... 10 Fazendo as bolas de fogo sumirem ............................................................................... 11 Melhorando o movimento ............................................................................................ 11 Importando a Torre ....................................................................................................... 11 Mudando a inteligncia ................................................................................................ 12

4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.1.10 4.1.11 4.1.12 4.1.13

3 - Oficina de Desenvolvimento de Jogos Unity 3D - Miguel Angelo Baggio

1 Introduo ao ambiente UNITY 3DA Unity 3D um engine de jogos que roda por baixo de um jogo. uma engine paga, e existe uma verso Free para quem quer estudar e aprender sobre desenvolvimento de jogos. A engine pode ser baixada no site http://unity3d.com/. No site da Unity 3D existe o arquivo de instalao, alguns exemplos, modelos, tutoriais em vdeo e um frum. Quando voc executa pela o programa pela primeira vez, por padro um exemplo aberto. Voc pode dar um zoom no cenrio aproximando ou afastando a viso da cena com o boto de scroll do mouse. Bem no centro da tela existe o boto de play, que serve para voc rodar a cena que est sendo trabalhada. Note que isto no a parte de compilar e gerar o jogo ou o executvel. simplesmente rodar a cena que est sendo trabalhada. Executar apenas dentro da prpria engine. As teclas para voc andar so no componente padro de first-person-shooter W,A,S,D, que movimentar o personagem para frente, para esquerda, trs e direita respectivamente. Para voltar a editar novamente a cena, clique no boto de play e volte a editar novamente a sua cena. Se voc pressionar a tecla ALT + Boto Esquerdo do Mouse (Bot.Esq.Mouse) voc consegue girar a tela (modo de edio de cena). Se voc pressionar a tecla ALT + Boto de Scrool do Mouse (Bot. Scr. Mouse) voc consegue puxar e empurrar a tela, como se estivesse caminhando pela cena.

2 Painis do Unity 3DNesta seo voc encontra algumas dicas dos painis e como organizado o ambiente de desenvolvimento Unity 3D. Primeira coisa a notar que voc pode movimentar os painis do jeito que voc achar melhor de desenvolver. Basta clicar, segurar e arrastar para a parte da tela especifica que voc deseja deixar o painel. Geralmente deixa-se o painel inspector bem no lado direito, que fica mais fcil de achar as propriedades. Uma dica deixar as abas de project e hierarchy acopladas ao lado da aba inspector ficando toda a tela para visualizar a cena. A outra aba, com o nome de Game como realmente vai ficar a cena depois de renderizar, que seria mais ou menos a mesma coisa que apertar o boto de play, por isso no necessrio dividir em duas telas (alguns gostam de deixar as duas abas aparecendo).

2.1 Painel HierarchyNeste painel esto todos os objetos que voc tem dentro da cena. Selecionando um objeto e apertando a tecla F, voc vai ser direcionado para onde o objeto est, ou seja, vai focar o objeto. Quando voc seleciona o objeto, e estiver no modo MOVE, pode-se notar que existem 3 setas, apontado para os trs eixos dimensionais, X,Y,Z. Nesta setas, voc clica com o boto esquerdo e pode movimentar o objeto sobre a cena nos eixos, levando o objeto para cima, para baixo, para tras, para frente, para esquerda, para direita.

4 - Oficina de Desenvolvimento de Jogos Unity 3D - Miguel Angelo Baggio

Quando estiver no modo de movimentao das setas, difcil de saber onde o objeto vai estar dentro da cena, ento para facilitar, existe uma parte com todos os eixos bem no canto superior direito, onde voc clica e ele posiciona a cmera direto conforme o eixo selecionado para voc ter uma viso do objeto conforme aquele ngulo especifico. Selecionando a parte de rotao na edio de cena, ao lado das setas de movimentao do objeto, voc pode dizer para qual lado o objeto vai estar virado, quando iniciar o jogo. Neste modo, vai aparecer um globo onde voc pode clicar e girar o objeto, em torno de cada um dos eixos que est no globo.

Quando voc der um play, e deixar as duas telas, cena e game junto, quando voc se movimentar vai ver o cilindro ou cubo que representa o personagem movimentando-se. esse cubo que monitora as colises dos objetos, no a parte grfica que geralmente enxergamos, um objeto com muitos pontos de coliso geralmente gerencia vrios cubos ou partes diferentes, tornando complexo o sistema.

5 - Oficina de Desenvolvimento de Jogos Unity 3D - Miguel Angelo Baggio

2.2 Painel ProjectDentro do painel Project conta todos os objetos que esto includos no seu projeto. No necessariamente esto includos na cena. Voc pode criar scripts, importar objetos, e tudo que fizer relacionado a isto ficar armazenado nesta aba.

2.3 Painel InspectorNeste painel aparecem todas as propriedades dos objetos. Voc pode editar os scripts, configuraes, tudo que est relacionado ao objeto.

3 Funes de controle de cmera (modo edio)Nesta seo voc encontra todas as funes das teclas e do mouse, ou combinaes dos dois, para controlar a cmera, e movimentar-se pela ambiente da cena enquanto voc est no modo de desenvolvimento.

3.1 Afastar a viso da cena (zoom)Voc pode dar um zoom no cenrio aproximando ou afastando a viso da cena com o boto de scroll do mouse.

3.2 Girar a telaSe voc pressionar a tecla ALT + Boto Esquerdo do Mouse (Bot.Esq.Mouse) voc consegue girar a tela (modo de edio de cena).

3.3 Puxar e empurrar a telaSe voc pressionar a tecla ALT + Boto de Scrool do Mouse (Bot. Scr. Mouse) voc consegue puxar e empurrar a tela, como se estivesse caminhando pela cena.

3.4 Centralizar um objeto (focus)Se voc pressionar a tecla F com o objeto selecionado dentro da cena, voc vai ser direcionado para onde o objeto est. O que pode ser feito tambm dar dois cliques do mouse no painel de hierarchy em cima do objeto que vai ser centralizado.

4 Criando um ProjetoA primeira coisa que temos que entender a diferena entre um projeto e uma cena. Um projeto praticamente todo o jogo completo, englobando todas as fases, todos os bnus, tudo que aparece no jogo. Uma cena propriamente um nvel ou fase do seu jogo. A cena simplesmente parte do projeto. Um projeto pode conter apenas uma cena. Quando voc cria uma nova cena, voc pode usar objetos (assets) criados em outras cenas.

4.1 Crie um projetoSelecione File -> New Project, selecione todos as bibliotecas possveis para criar nosso exemplo.

6 - Oficina de Desenvolvimento de Jogos Unity 3D - Miguel Angelo BaggioFeito isso, ser criado automaticamente uma cena. Nesta cena, provavelmente no vai existir nada, precisamos criar um plano onde ser colocado todos os objetos e ser o nosso mundo.

4.1.1 Criando o planoPara criar um plano, selecione o menu GameObject. Um gameobject praticamente qualquer coisa que vai estar contida dentro da cena. Dentro do menu v para o menu CreateOther e selecione Cube (cubo). Este cubo ser o nosso cho. Aps criar o cubo, aperta a tecla F para focar o cubo. Na aba inspector do cubo, selecione as opes de Posio e coloque 0 nos eixos X,Y e Z.

O prximo passo transformar o cubo em um plano, ou seja, algum lugar onde possamos andar e caminhar. O primeiro passo esticar os eixos do plano. Ento na mesma aba inspector v na parte de escala e modifique o tamanho para ser um ambiente onde possamos caminhar. No exemplo vamos fazer um plano de 25x25, conforme a figura:

O plano vai parecer meio alto, podemos modificar o eixo y para 0.3, pois no necessrio ter um plano maior. Aperte o play e rode a cena. Quando rodamos a cena, ns iremos poder ver o cho mas no poderemos nos movimentar.

4.1.2 Criando a luz ou iluminaoAntes de fazer qualquer coisa, vamos adicionar uma luz no ambiente, ou uma iluminao. V novamente a gameobject , depois em create other, depois selecione point light. Vamos levar a luz para cima. Clique no objeto da luz e selecione as setas para movimentar. Aps isso clique na seta amarela e puxe para cima, levantando a luz. Feito isso, podemos ver que o foco da luz no para baixo. Vamos apontar a luz para baixo. Clique nas setas da rotao e deixe a luz apontando para baixo. Mude o tipo da luz para Point, e depois o range (dimetro do foco da luz) para 40. Feito isso, voc pode clicar em play e ver que existe uma iluminao na sua cena. Vrios pontos de iluminao podem ser feitos no jogo, para por exemplo, mostrar uma lmpada acessa, os faris de um carro, etc.

4.1.3 Adicionando movimentaoAgora vamos adicionar a movimentao. Clique na aba Project e adicione First Person Controller a sua cena. Voc pode fazer isso arrastando para a cena grfica ou adicionando em hiearchy .

7 - Oficina de Desenvolvimento de Jogos Unity 3D - Miguel Angelo BaggioMude as propriedades do First Person Controller para posio nos eixos em X=0,Y=0,Z=0. Aps isso de um foco no objeto. Podemos ver que o objeto vai estar submerso dentro do plano. Simplesmente movimente o objeto para cima do plano, apertando nas setas do objeto e puxando ele para cima. Aps isso de play novamente. Ande a vontade em cima do plano. Como vamos adicionar a nossa movimentao direto no personagem, podem apagar o FPS da cena.

4.1.4 Adicionando o personagem (esfera)Adicione uma esfera a sua cena, v em gameobjects, create other e selecione sphere (esfera, bola).

4.1.5 Adicionando componentesUm bom momento para introduzir componentes ao seu objeto. Um componente do objeto so determinadas funes ou caractersticas que voc pode adicionar ao seu objeto. Vamos adicionar uma FSICA para nossa bola. V em Component, depois em Physics, e adicione Character Controler. Por enquanto a bola no faz nada ainda, temos que criar o script de movimentao. Para isso, clique com o boto direito em qualquer parte da aba Project e depois em Create, e depois em JavaScript. Agora renomeie (F2) o seu script para o nome de MoveAround (andar por ai). Depois de um clique duplo em Edit e ele vai abrir um editor de scripts.

Digite o cdigo abaixo:

var speed : float = 3.0; var rotateSpeed : float = 3.0;

function Update () { var controller : CharacterController = GetComponent(CharacterController); // Rotate around y - axis transform.Rotate(0, Input.GetAxis ("Horizontal") * rotateSpeed, 0); // Move forward / backward var forward : Vector3 = transform.TransformDirection(Vector3.forward); var curSpeed : float = speed * Input.GetAxis ("Vertical"); controller.SimpleMove(forward * curSpeed); } @script RequireComponent(CharacterController)

8 - Oficina de Desenvolvimento de Jogos Unity 3D - Miguel Angelo Baggio

Pessoal, o cdigo deve ficar como est aqui, com as letras coloridas, se der erro porque tem que arrumar o cdigo, devido ao script no reconhecer algum caracter. Este cdigo cria praticamente duas variveis, speed que a velocidade que o objeto vai ter sua movimentao e rotateSpeed que a velocidade que o objeto vai rotacionar. A funo update chamada toda vez que a engine desenhar um frame da cena (+- mil por segundo). Feito isto arresta o script para cima da esfera. L da aba Project, clique e arraste para cima da esfera na aba hierarchy.

4.1.6 Camera seguindo personagemAgora vamos fazer a cmera seguir o personagem. Primeiro de tudo, v na aba Project e na parte de procurar, digite smoothFollow. Arraste o smoothFollow para o objeto MainCamera. Para seguir a esfera, simplesmente arraste o objeto esfera para dentro da propriedade Target na aba Inspector dentro do Smooth Follow. Pronto, agora aperte play e rode o seu exemplo, ver que a cmera vai seguir a bola. Voc pode aumentar a velocidade da bola de uma maneiram fcil. Selecione a esfera e na propriedade inspector e mude speed para 7. Sua bola vai movimentar-se mais rpido.

4.1.7 Adicionando mais componentes ao personagemVamos colocar mais componentes ao nosso personagem principal. Clica na esfera com o boto direito e depois selecione duplicate. Quando voc duplica o objeto, voc acaba adicionando todas as propriedades que j existiam no objeto anterior ao objeto novo. Agora voc deve remover os scripts movearound e character controller da esfera duplicada. Duplique novamente a esfera e vamos deixar nosso personagem com 3 corpos. Agora movemos a parte 2 e a parte 3 para dentro da primeira esfera. Agora adicione mais 2 esferas para serem os olhos do nosso personagem. Bom, at agora podemos ver que o nosso personagem est completo, andando e todas as esferas acompanham a esfera principal. Montamos o nosso Verme (worm).

9 - Oficina de Desenvolvimento de Jogos Unity 3D - Miguel Angelo BaggioAs duas partes de trs do worm no est colidindo com os outros objetos do cenrio, atravessando paredes e cho. Agora vamos adicionar uma fsica as nossas duas partes de trs. Selecione cada uma das partes, uma parte por vez e adicione um component com o nome de sphere colider, que est dentro da parte physics em compoents.

4.1.8 Adicionando bolas de fogoAgora vamos fazer o personagem soltar bolas de fogo. Adicione novamente uma esfera ao nosso personagem. Retire a parte da textura para podermos visualizar melhor a bola enquanto continuamos com a programao. Selecione a esfera, renomeie para Fireball, clique Materials, depois deixe a propriedade Element para none. Voc pode adicionar direto a textura para uma bola de fogo. Selecione a textura e veja o efeito. Agora que voc j criou o primeiro componente da bola de fogo, vamos criar um componente PreFab, que um padro de objeto que pode ser utilizado posteriormente, com todas as caractersticas que j foram configuradas. Um componente PreFab pode ser utilizado em outras cenas ou nveis dos seu jogo. V em Assets, depois em Create e depois em Prefab. Voc vai poder ver o prefab na aba Project. O novo Prefab vai ficar com uma caixinha cinza enquanto ele est vazio. Depois que voc colocar qualquer componente no prefab, ele vai ficar com a cor azul. Agora arraste o componente Fireball para dentro do prefab. Quando voc clicar na prefab, vai abrir uma janela de preview do componente. Agora que o prefab j foi criado, podemos deletar o componente Fireball da cena. A bola de fogo ainda vai continuar existindo no nosso projeto, mas no ser visto na cena. Agora vamos criar o script para atirar a bola de fogo. A grande pergunta : De onde a bola de fogo vai sair? Temos que definir um ponto. Vamos criar uma nova esfera para ser o ponto de inicio de onde nossa bola de fogo vai surgir. Deixe uma bola bem pequena mas no deixe a bola tocar no personagem, porque o personagem poderia perder vida quando a bola vai sair do personagem (uma bola de fogo machuca). Como no queremos que a bola de fogo colide com o ponto que criamos, temos que deletar o sphere colider do ponto criado. Renomeie o ponto criado como spawnPoint (ponto de inicio). Agora o que precisa deixar o spawnPoint invisvel. Simplesmente selecione o objeto e desabilite o meshRender nas propriedades do objeto. Agora j temos quase tudo, o que precisamos fazer adicionar algum script para a bola de fogo sair do ponto de inicio. Adicione a varivel abaixo de rotateSpeed: var bulliPrefab:Transform;

Agora quando voc clicar no worm, no script move around vai existir uma propriedade bulli Prefab. Arraste a bola de fogo para o espao disponvel para definir a propriedade.

10 - Oficina de Desenvolvimento de Jogos Unity 3D - Miguel Angelo Baggio

Agora adicione no final da funo, os seguintes comandos:if(Input.GetButtonDown("Jump")) { var bullit = Instantiate(bullitPrefab, GameObject.Find("spawnPoint").transform.position, Quaternion.identity); } }

O que faz essa linha? Quando voc usa instantiate voc cria um prefab no mundo, que precisa de 3 parametros. Instantiate (1,2,3) 1 = o que voc vai criar 2= a posio onde voc vai criar 3 = ngulo de onde ele vai ser visto.

Agora vamos fazer as bolas andar.Adicione uma fsica na bola de fogo, l no componente prefab do tipo rigibody. Adicione logo abaixo da linha var bullit... a seguinte linha: bullit.Rigibody.AddForce(transform.forward * 2000);

Feito isso nosso jogador agora atira bolas de fogo. Adicione uma parede para as bolas no passarem da parede e testar um pouco da fsica da unity3d.

4.1.9 Importando objetosNo prprio site da unity3d , voc encontra uma lista de programas que fazem modelagem de objetos, que podem ser importados dentro do unity3d. Acesse o site www.turbsquid.com que existe muitos modelos para voc baixar, tanto pagos quanto grtis (free). Feito isso, baixe qualquer modelo e vamos importar dentro da unity3d. Clique com o boto direito na aba Project e selecione show in explorer. Coloque os modelos baixados dentro da pasta Assets, Quando voc voltar para o unity3d, ele vai importar automaticamente os dados que esto no diretrio Assets. Feito isso voc pode simplesmente importar o objeto para dentro da cena. Voc pode adicionar componentes ao objeto importado, como uma fsica, para poder bater no objeto. Se voc no colocar uma fsica, o seu worm vai passar por dentro do objeto. Selecione o objeto la em Project e modifique as propriedades para geneate colliders.

11 - Oficina de Desenvolvimento de Jogos Unity 3D - Miguel Angelo Baggio

4.1.10

Fazendo as bolas de fogo sumirem

Agora vamos criar um novo script que vai fazer as bolas sumirem. Crie um novo script no projeto. O script deve conter as seguintes linhas:

var lifeTime = 1.0; function Awake () { Destroy (gameObject, lifeTime); }

Feito isso, arraste o script para o preFab fireball. Pronto, suas bolas de fogo devem sumir depois de 1 segundo.

4.1.11

Melhorando o movimento

Quando nosso personagem anda, ainda sofre uns problemas de fsica, ento retire as partes do corpo de dentro do worm, e adicione os scripts smoothfollow para as 2 partes novamente. Agora clique na parte do worm, bodypart2 e coloque o target do script smoothfollow o nosso worm. No follow do bodypart3 coloque o bodypart2. Se voc rodar vai ver que a bola est sozinha. Isto porque por default, a distancia 10, modifique a distancia para 1. Modifique tambm a propriedade height para 0, para no ter distancia no eixo y tb, Modifique as duas propriedades abaixo para 6, que so as rotaes que as bolas faro ao seguir.

4.1.12

Importando a Torre

Agora voc deve importar a torre que esta disponvel. Feito isso, no esquea de marcar as colises dentro do prefab da torre. Aps isso, arraste a torre para sua cena. Aps fazer isto, separa as duas parte das torre. Deixando a de cima e a de baixo separadas. Crie um novo gameobject. Va em gameobject e depois clique em createempty. Coloque agora as duas partes da torre dentro do novo gameobject. Crie um novo javascript no projeto com o nome de TurretControl. Adicione as linhas abaixo ao script:

var LookAtTarget:Transform; function Update () { transform.LookAt(LookAtTarget); }

12 - Oficina de Desenvolvimento de Jogos Unity 3D - Miguel Angelo BaggioFeito isso, arraste o script para nossa Turret, mas apenas para a parte de cima da Turret. Agora simplesmente v na parte do topo da torre, e no script coloque o nosso worm. No esqueca de criar um PreFab para sua torre ser usada em outros nveis ou fases do seu jogo.

4.1.13

Mudando a inteligncia

Se voc percer, a torre nunca vai errar um tiro, pois ela mira direto no nosso worm. Isso injusto e tornaria o game praticamente invencvel. Vamos modificar o script de olhar. Clique no script e modifique um pouco a rotao. Vamos fazer ela rotacionar um pouco mais devagar.

var LookAtTarget:Transform; var damp = 1.0; //deltaTime a diferenca entre um frame e o seguinte function Update () { var rotate = Quaternion.LookRotation(LookAtTarget.position - transform.position ); transform.rotation = Quaternion.Slerp(transform.rotation, rotate, Time.deltaTime * damp); //transform.LookAt(LookAtTarget); }

Essa modificao faz com que a torre ande um pouco mais devagar. Divirtam-se construindo jogos e cenrios. Existe muito tutorial na internet.