Baixe o app para aproveitar ainda mais
Prévia do material em texto
Apostila Unity 4 Curso de Unity 4 A indústria dos games vem crescendo a cada dia e o que era uma brincadeira de criança hoje virou coisa séria, já existem games que tem até indicação de idade. E essa indústria se tornou tão rica que até o cinema se rendeu a ela, há alguns anos era comum ver grandes filmes se tornarem jogos de vídeo game, hoje isso mudou. Temos grandes games que invadiram os cinemas, como Hitman, O Príncipe da Pérsia, Street Fighter,Mortal Kombat, entre outros E agregado ao crescimento dessa indústria está o desejo de vários jovens do mundo inteiro em fazer parte desse mercado milionário. O que parecia um sonho há cerca de cinco anos atrás, hoje é realidade. Temos hoje no Brasil pequenas empresas de games que estão faturando muito com essa indústria, principalmente os voltados para dispositivos móveis, porém, já temos também algumas empresas brasileiras apostando no mundo dos consoles. Devido ao fato dessa indústria estar em um momento de grande crescimento no Brasil, quem souber desenvolver algo novo e de qualidade certamente vai colher os ricos frutos desse segmento. Agora vamos conhecer um pouco mais a fundo sobre a origem de tudo isso, como e de onde vem o primeiro console, os primeiros jogos, os principais ícones desse mercado que vem crescendo numa velocidade incrível e ainda promete crescer ainda mais nos próximos anos. A história dos games Podemos dizer que a história dos games começou no ano de 1958, em um laboratório de pesquisas militares norte americano. O primeiro jogo criado tinha o nome de Tennis for two, a mecânica desse jogo era muito simples, o jogador precisava simular um jogo de Tênis na tela de um osciloscópio. Apesar desse jogo nunca ter saído de dentro do laboratório onde foi criado, isso não desabona em nada sua importância para o mundo dos jogos. Depois dele em 1961 surgiu mais um jogo criado nos Estados Unidos, dessa vez a criação foi mérito de estudantes da Universidade de Massachusetts. O jogo não tinha sido desenvolvido para fins comerciais, na verdade foi mais um desafio entre amigos. O principal desafiado em questão foi Steve Slug Russel, que foi responsável por grande parte do trabalho de desenvolvimento do jogo que futuramente ficaria conhecido como Spacewar. A idéia para esse jogo era simplesmente mostrar todo o potencial de uma máquina nova que usava transistores ao invés de válvulas. Apesar do desinteresse comercial por parte dos criadores do jogo, não faltaram pessoas interessadas em investir nessa nova idéia. E foi na década de 70, oito anos após a finalização do jogo Spacewar, que apareceram os primeiros investidores na área de games. Não podemos esquecer que falar de games é falar de um conjunto e não de um único produto, um jogo eletrônico precisa de um aparelho para poder executar suas rotinas de programação, então, a evolução dos softwares de games caminhou lado a lado com a evolução dos hardwares para rodar os games. E esse fato fica claro em meados de 1971 com o nascimento do Odyssey, um console capaz de se conectar a aparelhos de televisão. Esse console de propriedade da Magnavox, certamente abriu as portas para as inovações que estariam por vir. Como uma dessas inovações vai citar as conhecidas máquinas de fliperama, que resistem até os dias de hoje tornando aquela nossa visita ao Shopping Center muito mais divertida. Depois desse fenômeno chamado fliperama, era de se prever que surgissem empresas interessadas em investir nos games, uma dessas empresas foi a Atari que surgiu em 1976 inspirando outras empresas a investir em jogos e consoles cada vez mais avançados. Nem precisamos falar do sucesso que foi a empresa Atari, qualquer pessoa que conheça o mínimo sobre games sabe a febre que foi o console produzido por ela. E essa febre se alastrou de tal forma que outras empresas viram nesse novo segmento a oportunidade de gerar muito lucro em pouco tempo, uma dessas empresas foi a Mattel, que se tornou uma forte concorrente da Atari brigando não só na produção dos jogos, mas também na produção de consoles. Durante alguns anos os proprietários dessas duas empresas não enxergavam nada a não ser um ao outro, a Atari e a Mattel estavam literalmente numa guerra por mercado, e enquanto essa guerra se intensificava outros investidores resolveram aproveitar para lucrar investindo na produção de jogos para esses consoles, e assim foram surgindo empresas como Ubisoft, Rockstar, entre outras especialistas em criação de jogos. Afinal, com o mercado de console concentrado nas mãos de dois titãs, o que restava para os pequenos desenvolvedores era criar jogos para eles. E foi dessa forma que surgiu a primeira Softhouse da história dos games, a mundialmente conhecida Activision criadora de relíquias como Enduro e Pitfall. A história dos games Agora a história dos games ganhava uma nova página onde desenvolver jogos era tão lucrativo quanto desenvolver os consoles. Após a criação da Activision muitas outras empresas vieram e se foram de acordo com as necessidades do mercado, mas sem dúvida uma empresa que podemos citar como revolucionária desde a sua fundação é a Nintendo. A Nintendo famosa produtora de consoles e games japonesa, é a responsável por inúmeros sucessos tanto na parte de games quanto na de consoles. E Falar de Nintendo e não falar de Shigeru Miyamotoseria impossível. Shigeru foi responsável por títulos que faturam até os dias de hoje milhares de dólares, alguns deles são: Super Mario, A lenda de Zelda, Metroid, Star Fox, entre outros títulos de sucesso. Podemos dizer que a Nintendo é hoje o que foi a Atari nos anos 70, é obvio que a Nintendo enfrenta rivais muito mais poderosos do que a Atari, mas é essa rivalidade que mantém essa empresa viva e se renovando a cada dia. Podemos destacar como a primeira rival da Nintendo a poderosa Sony com seu console Playstation. O Playstation desde sua primeira versão chamou a atenção pelos belos gráficos e jogos não tão lúdicos (marca registrada da Nintendo). E com essas características mais voltadas para o público adulto não demorou muito para a Sony começar a conquistar jogadores que queriam bem mais que pular em tartarugas e quebrar tijolos com a cabeça. Com o Playstation 2 lançado em Março de 2000 a Sony conseguiu garantir de uma vez seu lugar no mundo dos games, mostrando ao mundo jogos incríveis como GTA e God of War. Hoje o Playstation está em sua terceira versão e mantém a mesma linha de desenvolvimento com muita realidade e qualidade. Por último, mais uma empresa de grande poder no mercado mundial resolveu também querer uma fatia desse mercado tão lucrativo, a Microsoft então lança seu próprio console, o Xbox. O Xbox surgiu com uma proposta bem parecida com a do Playstation da Sony, jogos voltados para um público mais velho, porém com uma diferença ou um destaque, o foco em jogos multiplayer. Hoje podemos dizer que o mundo dos games é controlado por essas três grandes empresas: Sony,Nintendo e Microsoft. Vale lembrar que com o surgimento dessas grandes empresas, aquelas primeiras que citamos no início dessa apostila como a Atari e a Mattel, foram perdendo força e espaço na produção de consoles para essas três grandes empresas que hoje dominam esse mercado. Mas a história não para por ai, novos consoles ainda estão surgindo como o ainda desconhecido Ouyaum console que promete executar na TV games feitos para a plataforma Android. E para completar essa abrangente área de jogos eletrônicos não dá para se esquecer de citar o mercado em plena ascensão dos jogos para mobile, telefones celulares e tablets que também competem e buscam seu espaço e sua "fatia" desse mercado incrivelmentelucrativo de games. Quais são os estilos de games mais jogados em cada plataforma? Essa é a pergunta que todo desenvolvedor de games seja ele experiente ou não, deveria se fazer antes de iniciar um projeto, um dos maiores erros dessa indústria é iniciar um projeto caro e demorado sem analisar se existe mercado para o mesmo. É preciso entender que games campeões em vendas para PC muitas vezes não vão vender tanto em um console e vise versa. Vamos analisar a fundo os principais aparelhos executores de games e analisar seu respectivo mercado. Hoje em dia temos os seguintes aparelhos: Console Os consoles são aparelhos eletrônicos dedicados a executar games, esses aparelhos precisam estar conectados a aparelhos transmissores de imagem e áudio (aparelhos de TV) para que possam ser utilizados da maneira que se deve. Se fizermos uma pesquisa, veremos que de 90% dos lares no mundo todo possui ao menos 1 aparelho de televisão. Isso é comum faz parte da nossa cultura, desde pequenos já somos acostumados a passar boa parte do nosso tempo assistindo TV. Seja na sala em sofá, ou no quarto deitados em uma cama, espalhado em um puff, ou até mesmo sentado ou deitado no chão, enfim, o assistir TV é um ato de relaxamento. E um game feito para consoles tenta seguir a mesma linha que os programas de TV, ou seja, é feito para relaxar, se descontrair, enfim, se divertir. Quando você senta em frente à TV você quer relaxar e acompanhar alguma história, nos identificarmos com alguns personagens, fantasiarmos outros, enfim, são por essas razões que gostamos tanto de filmes, novelas e seriados. E as empresas de games para console sabem disso, e produzem jogos com histórias onde você deixa de ser apenas um espectador e vira o personagem principal, jogar um game no console é deixar de ver o filme para entrar nele. Computadores Os computadores ao contrário dos consoles não têm como função primordial executar games, na verdade essa ação é apenas uma das várias tarefas de um computador. Agora vamos analisar em quais locais temos maior facilidade de encontrar computadores. Os computadores podem ser encontrados nas casas, salas e quartos, podem ser encontrados nas empresas, nos hospitais, nos comércios, e por ai vai. Essa diversidade de locais possíveis de se encontrar um computador identifica com facilidade seus usuários e em consequência os tipos de jogadores desses aparelhos. A seis ou sete anos atrás raramente você encontraria um jogador de computador em sua casa em sua maioria esse jogadores jogavam no trabalho e principalmente em Lan House e Cyber Café, porém com a evolução do hardware e o preço reduzido de máquinas mais potentes e internet banda larga ficou comum encontrar esses jogadores em suas casas ou em casas de amigos jogando em grupo. Celulares Os jogadores que usam esse aparelho são diferentes dos dois anteriores, pois pelo fato do celular ser um aparelho portátil ele pode se adequar a situação e ao local onde está. O jogador que usa um celular pode jogar em uma fila de espera, deitado em sua cama, no sofá da sala enquanto a mãe assiste TV, enfim é um aparelho que se adapta a qualquer lugar e situação, talvez por isso seja tão difícil definir um estilo de jogo para ele. Quando pensamos em celulares precisamos definir games levando em consideração as dimensões e potência do aparelho e não o local ou hora que o jogador vai usá-lo. Então para um aparelho que tem uma tela limitada é preciso desenvolver games que façam uso de imagens grandes e que não sobrecarreguem o sistema do celular que tem outras funções além de servir como reprodutor de games, nesse caso a otimização de imagens e códigos é imprescindível. Entre os games mais jogados para celulares estão o famoso Side Scroll ou "estilo Super Mário", Tetrise qualquer jogo que use uma única tela. É claro que dependendo do aparelho celular jogos mais potentes podem ser executados por ele, mas aqui estamos falando dos aparelhos em geral. Tablets As tablets se encaixam nas mesmas descrições dos celulares, exceto pelo tamanho da tela e potência do aparelho. Para desenvolver games para tablets algumas regras usadas no desenvolvimento para celulares precisam ser mantidas como a otimização de código e gráficos. Mas ao contrário dos celulares as tablets podem reproduzir games em 3D com qualidade superior aos reproduzidos por certos consoles como Playstation 2 por exemplo. Então, logicamente games como Hitman e God of War para Playstation 2 podem muito bem serem reproduzidos nesses aparelhos. Tipos de Games Muitas pessoas jogam jogos de estilos diferentes e acham que é tudo igual, não é bem assim, os games são diferentes entre si. Além do game para puro entretenimento que é o mais conhecido pelos jogadores de console, existem outros tipos de jogos que vamos listar a seguir. Advergames Os advergames se tornaram populares a partir do ano de 2000, a estratégia dos advergames é muito simples, ela se baseia em fundir uma propaganda com um jogo. Hoje é comum encontrarmos games que promovem produtos e até mesmo serviços. Essa é uma forma de fixar uma marca ou serviço na cabeça do jogador. Existem várias empresas que apostam nesse novo tipo de marketing, por exemplo, encontramos jogos de bolachas, de carros, de dinossauros que comem iogurte e por ai vai. Games educativos Essa modalidade de jogos também é muito popular entre os pais e professores. Existem escolas que pagam pequenas fortunas para adquirir jogos que possam ajudar a fixar na mente de seus alunos o conteúdo curricular, que podem abranger desde os primeiros anos escolares com jogos simples para a alfabetização, conhecer cores, animais, entre outras coisas, como também podem ser utilizados para criar jogos mais complexos e que mostrem na prática conteúdos que em uma sala de aula seriam extremamente difíceis de explicar. Esses jogos são em sua maioria muito simples para se desenvolver, sem muitos efeitos visuais ou complexas histórias, mas cumprem com excelência sua função, jogos como ligar pontinhos, colorir, quebra cabeça, são alguns dos games possíveis para essa categoria. Games corporativos Essa categoria de games também é nova no mercado e ela se destina a treinar trabalhadores que precisam executar funções complexas em ambientes de extremo risco. Assim como os educativos esses games não tem seu foco em qualidade gráfica, à única exigência do mesmo é a exata reprodução da realidade. Existem empresas petroquímicas que usam simuladores virtuais para treinamento de operadores de máquina, autoescolas que usam simuladores ao invés de veículos reais para testes de condutores. Games sociais Essa modalidade de games vem crescendo a cada dia, com comunidades como Orkut e Facebook o mercado para games sociais vem crescendo bastante. As pessoas não se contentam mais em apenas deixar mensagens nas redes sociais elas querem interagir umas com as outras através de um mundo virtual, um mundo dos games. O crescimento desse tipo de jogo foi tanto que em alguns games sociais podemos ver traços típicos de advergames. Isso é natural afinal um jogo onde várias pessoas interagem umas com as outras é sempre uma boa ferramenta para se anunciar produtos e serviços. Temos como um bom exemplo de game social o Cityville da Zynga um jogo muito parecido com o famoso Simcity. Games Indies O que é um desenvolvedor Indie? Podemos definir como um desenvolvedor de games indie uma pessoa ou pequeno grupo de pessoas que não estão inseridos no grande mercado de games, mas que produzem games comerciais mesmo assim. Uma das diferenças entre os desenvolvedores indie e os grandes desenvolvedores é a organização da equipe e claro seu capital. Enquanto grandes empresastêm verdadeiras linhas de produção para desenvolver seus produtos e um capital de giro expressivo para promover esses produtos, os indies precisam ser polivalentes e em sua maioria não tem capital inicial. Um produtor de games indie precisa muitas vezes saber programar, modelar, vender o produto, e tudo isso com o capital a zero. Como e onde publicar seus games Indies A indústria dos games é sem duvida uma indústria milionária mesmo em tempos de crise esse seguimento se mantém firme e estável. Esses fatores são mais que suficientes para atrair um número enorme de jovens querendo realizar dois sonhos, o de ganhar muito dinheiro e o de fazer aquilo que ama. Mas precisamos deixar claro para esses novos profissionais que a indústria dos games assim como qualquer outra exige muito de seus colaboradores, criar um game de qualidade é uma tarefa árdua que exige muito estudo e disciplina. Se você teve a iniciativa de adquirir esse curso já provou que tem essas qualidades então vamos seguir em frente. Quando você terminar seu game vai se deparar com uma questão, o "e agora"? Afinal você precisa fazer com que o maior número de pessoas possível jogue a sua criação, e acredite ninguém vai querer te passar os contatos para que você consiga fazer isso afinal você é um concorrente. Mas é por isso que nós da AprendaMais resolvemos ajudar nossos alunos não só ensinando como criar games de qualidade, mas também como publicá-los. Nos próximos tópicos vamos apresentar ótimas opções para publicar seus games aproveite essas oportunidades. Big Fish O Bigfish é uma excelente opção para publicação de games indie, a equipe é bem atenciosa e profissional, no site deles você pode ver o procedimento para envio de seus games, e o melhor eles trabalham com games para Pc, Mac, Android, Iphone e Ipad. Segue o link:http://www.bigfishgames.com.br/ Arcade Town O Arcade town é um site bem interessante você pode publicar seus games nesse site e colocando a logo marca deles no seu game é possível não só ser reconhecido como faturar algum. Veja o link: http://www.arcadetown.com/ Union A Union talvez seja uma das mais interessantes formas de publicar seus games, ela faz parte da Unity Tecnologies e a equipe da Unity te ajuda a vender seu game por uma pequena percentagem do seu lucro. Veja o link: http://unity3d.com/ Steam O que falar sobre a Steam? Ela é simplesmente o sonho de qualquer desenvolvedor, é o seu game anunciado para o mundo inteiro. Veja o link: http://store.steampowered.com/ Como documentar um projeto de game Um game como qualquer produto precisa ser bem documentado, existem etapas que precisam ser acrescentadas a rotina da equipe de desenvolvimento. Abaixo vamos listar as etapas de desenvolvimento dessa documentação: Fase inicial Nessa fase precisamos definir com riqueza de detalhes todas as informações referentes ao game, se ele é um game 2D ou se é 3D. A história de um game precisa ter começo meio e fim, os objetivos do jogador dentro dele precisam estar bem definidos para que no final todas essas informações possam servir para as próximas etapas. Documento de público Esse documento é de extrema importância para o desenvolvimento do projeto e é através dele que analisamos todas as informações do mercado de games para as principais plataformas e suas devidas categorias como: games de ação, games de aventura, etc. Nesse documento também é preciso definir com clareza todas as estratégias de marketing para promover o game de tal forma que o lucro de vendas supere o valor de investimento. Descrição técnica Essa fase é uma das mais curtas do desenvolvimento da documentação, talvez por ser uma etapa que necessite de objetividade no que é documentado. É na descrição técnica que documentamos algumas informações vitais ao funcionamento do game como, por exemplo, se o game é massivo qual linguagem de programação está sendo usada, em qual aparelho será executado. Documento de game designer Esse documento é responsável por coletar todos os documentos criados anteriormente a fim de produzir um game que respeite ao máximo as determinações já documentadas. A documentação de game designer não admite erros, uma decisão tomada sem o devido conhecimento nas documentações anteriores é capaz de destruir todo um projeto de game já que a função desse documento é garantir que todas as decisões anteriores sejam integralmente executadas. Protótipo Por fim o protótipo, fase onde documentamos todos os testes feitos em cenários, funções. Essa fase tem como principal meta garantir a mecânica de jogo. Além das documentações apresentadas anteriormente existem documentos que precisam ser feitos paralelamente para garantir o sucesso do projeto. Precisamos analisar quais são as expectativas dos jogadores ao jogar o seu game, se ele oferece ao jogador uma experiência social podendo ser jogado entre amigos e se ao mesmo tempo ele possibilita uma experiência mais individual para que o jogador possa usufruir do produto mesmo quando estiver sozinho. É preciso analisar até onde vai à coerência do game, não se podem adicionar itens coletáveis a um game que não tenha nenhuma função lógica. Dentro de um game todos os objetos que sejam dotados de ação com o jogador precisam ter funções agregadas a si, algumas funções mais importantes outras menos, mas definitivamente todas com alguma interação lógica e perceptível ao jogador. Os limites do mundo dos games também precisam ser bem definidos afinal o personagem precisa começar e terminar o game como herói ou como vilão evitando qualquer forma de mudança de lado durante a história do game, não devemos esquecer que um pecado mortal no mundo dos games é deixar o jogador confuso, essa sensação causa descontentamento e consequentemente desinteresse pelo jogo. Outro tema importante para se documentar é o fluxo ou andamento de game, um desenvolvedor de games em hipótese alguma pode deixar lacunas que venham a provocar o travamento "no sentido evolutivo da história do game". É preciso deixar pistas que mostrem para o jogador como ele pode prosseguir no jogo, ninguém gosta de chegar a uma fase e não encontrar pistas do que precisa ser feito para seguir adiante. Seguindo esses parâmetros seu game estará bem documentado e pronto para ser desenvolvido com o mínimo de erros possível, talvez você ache esse procedimento demorado e até um pouco chato, mas acredite é ele que vai te ajudar a obter sucesso. UNITY 3D Finalmente chegamos na parte do curso que muitos estavam esperando, a parte onde vamos conhecer a Game Engine Unity3d. Introdução A Unity3D como já foi mencionada, é uma Game Engine ou traduzindo, um motor de jogo. A função desse software é facilitar ao máximo o desenvolvimento de aplicações interativas 3D. A empresa criadora da Unity3d (Unity Tecnologies) foi responsável por uma verdadeira revolução no mundo dos games, afinal além de desenvolver uma ferramenta capaz de competir de igual para igual comGame Engines poderosas no mercado como UDK e CRY ENGINE, a Unity3D mostrou toda sua ousadia quando anunciou ao mundo que liberaria uma versão gratuita e comercial para desenvolvedoresIndie. Talvez essa atitude tenha sido apenas uma jogada de marketing já que em 2007 e 2008 para uma pessoa comum ter uma ferramenta desse porte era praticamente impossível. Seja o que for deu certo e em pouquíssimo tempo a Unity3D começou a ser a Game Engine mais usada no mundo, conseguindo um espaço até mesmo no fechado mundo dos consoles. Hoje a Unity Tecnologies não só oferece uma versão gratuita para que novos desenvolvedores possam ingressar no mercado, como também oferece ferramentas adicionais por um preço relativamente baixo em relaçãoàs concorrentes que podem ir turbinando sua versão free da Unity3D. Baixando e instalando a Unity3D Acesse a página da Unity3D: http://unity3d.com/unity/download/ Após acessar a página faça o download da versão mais atual a 4.x.x: Agora que já fizemos o download da Unity3D vamos instalar dando um clique duplo sobre o ícone do programa. Depois de clicar teremos a primeira tela de instalação da Unity3Dapresentada na imagem abaixo: Clique no botão Executar para iniciar a instalação da Unity3D. Será apresentada a seguinte tela: Clique em Next para dar prosseguimento à instalação. Veja que irá aparecer a seguinte tela: Clique em I Agree para concordar com os termos de licença e continuar com a instalação. Feito isso, será apresentada tela da imagem abaixo: Clique em Next para instalar todos os componentes da Unity3D. A próxima tela a ser apresentada será a seguinte: Aqui a Unity 3D mostra onde ela será instalada em seu computador, clique em Install para prosseguir. Feito isso teremos a tela de progresso: Essa tela apenas mostra o progresso da instalação da Unity3D. Por fim teremos a última tela do processo de instalação, clique em Finish para finalizar o processo e executar a Unity3D. Clicando em Finish a tela representada na imagem abaixo abrirá: Nessa tela você vai precisar licenciar sua cópia da Unity3D, escolha a segunda opção, Active the free version of Unitye clique em OK. Feito isso será apresentada a seguinte tela: Se for a primeira vez que você está instalando aUnity3D, aqui será necessário que você clique no botão Create Account para se registrar na Unity3D (esse serviço é totalmente gratuito). Clicando nesse botão teremos a tela de registro: Preencha seus dados como pedido no formulário e clique em OK. Após esse procedimento você receberá um e-mail para confirmar seu registro, confirme o mesmo e a seguinte tela será apresentada em seu navegador web: Pronto! Você está perto de poder usar a Unity3D só precisa seguir mais alguns passos, veja a imagem abaixo: Depois de se registrar você deverá voltar à tela da Unity3D e colocar seu e-mail e senha criados nos passos anteriores, e será direcionado à tela abaixo: Preencha a pesquisa feita pela Unity eles querem saber seu nível de conhecimento, seus interesses para com Unity3D, etc. Terminado esse preenchimento avance. Aparece a seguinte tela: Pronto! Agora é só produzir seus games. Interface Agora que já instalamos e conhecemos um pouco da história da Unity3D chegou a hora de conhecer sua interface. Primeiramente vamos conhecer as ferramentas e posteriormente detalharemos cada parte delas. Enfim essa é a cara da Unity3D, a princípio parece um pouco assustadora com todas essas janelas, mas acredite é só impressão. Barra de ferramentas: A barra de ferramentas da Unity3D é composta pelos itens: File, Edit, Assets, GameObject, Component, Terrain, Window e Help. Cada um desses botões de menu serão explorados mais adiante, no momento só precisamos saber que eles existem para facilitar nosso trabalho. Ferramentas de manipulação 3D Logo abaixo da barra de ferramentas temos as ferramentas de manipulação 3D com elas conseguimos fazer todo tipo de manipulação de objetos dentro de um mundo tridimensional. Vamos detalhar cada uma delas: A ferramenta mão auxilia o desenvolvedor movimentando a tela da aba/janela Scene para qualquer direção. A ferramenta cruz tem a função de mover qualquer objeto de game (GameObjects) nos eixos X,Y e Z. A ferramenta de rotação tem a função de girar qualquer objeto de game (GameObjects) nos eixos X, Y e Z. A ferramenta de escalonamento tem a função de aumentar ou diminuir o tamanho de qualquer objeto de game (GameObjects) nos eixos X, Y e Z. As ferramentas Center e Local tem funções bem interessantes, o primeiro botão "Center" quando clicado pode mudar sua situação atual de Center para Pivot alterando a movimentação e rotação de dois ou mais objetos de game (GameObjects). Abaixo um exemplo de movimentação de dois objetos com o botão "Center" selecionado. Abaixo um exemplo de movimentação de dois objetos com o botão "Pivot" selecionado. Já a ferramenta Local quando clicada muda para Global fazendo com que um objeto de game (GameObjects) seja rotacionado, movido ou escalado de acordo com os eixos X,Y e Z do objeto (Local) ou do mundo 3D (Global). O uso dessa ferramenta ficará mais claro com o decorrer do curso. Ferramentas de iniciação de game As ferramentas de iniciação de game, como o próprio nome diz tem a função de iniciar um teste do game, o primeiro botão o play inicia a execução do código de game. Já o botão do meio o pause paralisa a execução do código, fazendo com que toda a aplicação fique imóvel. O último botão o avançar funciona como uma câmera lenta ele avança a execução do game aos poucos. Abas ou janelas da Unity3D Veremos agora as principais abas/janelas. Aba/Janela de montagem de game (Scene) Essa é a aba ou janela responsável por oferecer ao desenvolvedor um ambiente 3D para montagem dos cenários. Ela pode ser manipulada em qualquer direção e a mesma apresenta alguns botões responsáveis por funções específicas que serão detalhadas adiante. Botões da aba/janela de montagem de game (Scene) Da esquerda para a direita vamos analisar cada botão e suas propriedades: Textured que é responsável por apresentar ao desenvolvedor sua cena na forma texturizada (Default); Wireframe é onde podemos ver apenas as linhas dos objetos 3D; Textured Wire é possível ver os objetos texturizados e com as linhas de modelagem; Render paths que são os chamados caminhos de renderização, é onde podemos ver de que forma cada objeto será renderizado; Lightmap Resolution onde conseguimos ver as resoluções dos mapas de sombra estática. Abaixo temos uma imagem representando cada botão explicado acima. Prosseguindo, ao lado do botão Textured temos o botão RGB (que está com a opção Mipmapsselecionada) que significa Red, Green e Blue ou vermelho, verde e azul as cores primárias que juntas nos fornecem todas as faixas de cores reproduzidas pelos computadores. RGB que mostra a cena com as cores normais de cada objeto. Alpha que mostra as transparências das texturas; Overdraw que renderiza as transparências de uma forma que facilita detectar objetos renderizados um sobre o outro; Mipmaps, que mostra para o desenvolvedor se uma textura é grande demais para o objeto em que ela está sendo aplicada. Abaixo temos uma imagem representando cada botão explicado acima. Continuando um pouco mais a direita temos os seguintes botões: O pequeno sol: Tem a função de mostrar a cena com ou sem as luzes criadas em cena; O quadro: Tem a função de mostrar a cena sem as linhas de grade que guiam o desenvolvedor (As linhas quadriculadas que aparecem na aba/janela Scene); E por último temos o botão de iniciação de áudio ele tem a função de reproduzir os arquivos de áudio colocados na cena. À direita temos o botão Gizmos, esse botão lista todos os ícones da Unity3D permitindo alterar o tamanho de cada ícone e sua visibilidade. Segue abaixo a imagem do botão estendido com todas as suas opções. Por último no canto superior temos um campo de busca, nele podemos digitar o nome de qualquer objeto de game (GameObjects) que ele será destacado no meio de todas as modelagens e ícones presentes em tela.Veja um exemplo abaixo: A seta superior mostra o campo de busca com o nome do GameObject que no caso nomeamos como "caixa". E na seta inferior podemos ver o GameObject de nome "caixa" destacado dos demaisGameObjects em cena. Aba/janela de game (Game) A aba/ janela de Game tem a função de mostrar a execução do game sem a necessidade de uma compilação. Ao contrário de algumas ferramentas que compilam várias vezes um projeto para que seja possível visualizar o código em ação, a Unity3D mostra nessa aba/janela como seu game vai se comportar depois de ser compilado. Agora vamos entender qual a função dos botões que existem nessa aba/janela Veja que o primeiro botão mostra vários números, esses números são as suas opções de resolução de tela. Você pode escolher qualquer uma como resolução de seu game, e escolhendo verá que o tamanho da área de game será alterado. Veja um exemplo: Tela no modo de resolução em Free Aspect. Tela no modo de resolução em 5:4. Nessa mesma aba/janela perceba que existe um botão chamado Maximize on Play que tem a função de mostrar seu game executando em tela grande, e ao lado do botão Maximize on Play temos o botãoStats onde temos todos os dados de execução do game, desde número de triângulos até o número de frames por segundo. Ao lado do botão Stats temos o já apresentado botão Gizmos que apenas mostra a lista de ícones da Unity3D. Aba/janela de Hierarquia (Hierarchy) A aba/janela de hierarquia lista todos os objetos de game (GameObjects) em cena desde uma câmera até luzes e objetos 3D. Ela também tem a função de criar objetos de game (GameObjects) como cubos, luzes, câmeras, partículas, etc. Para isso basta clicarmos no botão Create que se encontra no canto superior esquerdo da aba/janela como mostra a figura abaixo: Note que aqui também temos um campo de busca que nos mostra onde está um objeto específico. Aba/janela projeto (Project) Na aba/janela projeto (Project) são listadas todas as pastas do game desde texturas, imagens, modelos estáticos, modelos animados, sons, shaders, enfim. Nela podemos criar pastas de game, códigos, animações entre outros elementos de game clicando no botão superior esquerdo Create. Veja na imagem abaixo como utilizar o botão Create: Primeiro clicamos em Create e no menu que aparece escolhemos a opção de acordo com o que iremos criar, um código, uma animação, enfim, será de acordo com o que queremos fazer. Note que ao lado voltamos a encontrar o campo de busca responsável por ajudar o desenvolvedor a encontrar elementos dentro da lista de elementos de game. Aba/janela inspeção (Inspector) A aba/janela de inspeção mostra para o desenvolvedor várias informações referentes aos objetos de game (GameObjects) e componentes de game (Game Components). Mostra por exemplo o nome do objeto de game (GameObject). Mostra a localização (Position), tamanho (Scale) e rotação (Rotation) desse objeto de game (GameObject) no mundo 3D. Podemos ver também algumas propriedades físicas como Is Trigger, Material, Centro de efeito físico (Center), Tamanho do corpo físico (Size). Outra opção muito eficiente que iremos mostrar agora é a renderização de malha onde temos as opções de lançar e receber sombras (Cast Shadows e Receive Shadows), material de textura (Material) empregado no objeto de game e uso de luzes (Use Light Probes). Nota: "Uma malha nada mais é do que um objeto 3D composto de uma malha de triângulos". Por último temos o material de textura aplicado ao objeto de game (GameObject), onde temos o nome do material, a cor predominante sobre esse material (Main Color), a textura usada (Base (RGB)) o valor de Tiling e Offset e no fim um botão para adicionar mais componentes (Add Component). Barra de ferramentas Como mencionamos anteriormente a Unity nos oferece uma barra de ferramentas bem parecida com as que existem nos programas comuns de computador como Word e Photoshop. Agora vamos detalhar cada item do menu e mostrar como cada um pode facilitar a vida do desenvolvedor de games. Menu File expandido: Perceba que os itens que aparecem até se assemelha a programas como Photoshop e Word. No menu File temos como primeiro botão o New Scene, clicando nesse botão iremos criar uma cena totalmente nova para nosso game (Lembre-se que uma cena equivale a uma fase do game). Logo abaixo temos o botão Open Scene, como você deve ter deduzido esse botão vai abrir uma cena dentre várias outras que seu game venha a ter. A seguir temos o botão Save Scene e Save Scene as, que como você também já deve ter deduzido é responsável por salvar as cenas (fases) do seu game. Na sequência temos três botões que são respectivamente: New Project - sua função é a de criar um projeto de game; Open Project – sua função é abrir um projeto de game existente; Save Project – sua função é salvar um projeto de game. Os dois botões seguintes, Build Settings e Build & Run são responsáveis por compilar seu game para a plataforma desejada, seja ela Pc, Mac, Web, Android, etc. E por fim o botão Exit que nada mais é que uma saída do programa. Menu Edit expandido: No menu Edit temos a principio os botões Undo(...) e Redo(...), esses botões avançam e retornam uma ação. Logo abaixo temos três botões o Cut, Copy e Paste, que significam respectivamente, recortar, copiar e colar um objeto de game (Gameobject). A seguir temos os botões: Duplicate - tem como função duplicar um objeto de game (GameObjects) ou componente (Game Component). Delete – tem como função apagar/excluir um objeto de game (GameObjects) ou componente (Game Component). Em seguida temos Frame Selected, para o funcionamento desse botão se faz necessário que você tenha selecionado ao menos um objeto de game (GameObject), se essa condição for satisfeita ao apertar o botão Frame Selected à visão do objeto selecionado será ajustada para um ângulo de trabalho mais adequado. Antes de clicar em FrameSelected: Depois de clicar em FrameSelected: O próximo é o botão find, clicando nele, seremos direcionados para a aba de pesquisa de objetos de game (GameObjects) onde teremos condições de encontrar qualquer objeto dentro de nossa cena. Na sequência temos o botão Select All que irá selecionar todos os objetos de game (GameObjects) que existirem na cena. Nota: "Na versão 4.0.x essa opção é executada de maneira satisfatória usando as teclas de atalho Ctrl + A. A seguir temos o botão Preferences..., que tem a função de ajustar a aparência da Unity3D, trocando as cores de fundos das abas/janelas dentre outras pequenas modificações visuais. Mais abaixo temos na sequência os botões: Play - responsável por executar o game; Pause - responsável por pausar a execução do mesmo; Step - responsável por executar frame a frame o projeto de game. Na sequência teremos: Load Selection - carrega a seleção de um objeto de game (GameObjects). Load Selection pode expandir até Load Selection 1, Load Selection 2… Save Selection - salva a seleção de um objeto de game (GameObjects). Save Selection pode expandir até Save Selection 1, Save Selection 2… Na sequência temos mais dois botões muito importantes o Project Settings e o Render Settings. O botão Project Settings é responsável por nos fornecer as configurações de inputs, áudio, física, qualidade de renderização entre outros. Já o botãoRender Settings nos fornece as configurações de renderização como a cor da luz ambiente, a cor do efeito de nevoa, entre outros efeitos. Continuando temos os botões: Network Emulation - que é responsável pelas configurações de rede como DSL, Dial Up, entre outras. Graphics Emulation - que nos oferece as opções de escolher qual tipo de shader queremos usar oShader Model 3, Shader Model 2, Shader Model 1, etc. E por último, temos o botão Snap Settings que nos fornece as configurações de grid (As linhas que servem de guia para posicionar os objetos em cena). Menu Assets expandido: No menu Assets começamos vendo o botão create que é responsável por criar pastas de game, códigos, animações, entre outros elementos de games. Na sequência teremos os seguintes botões: Show in Explorer - que nos mostra tudo que existe na pasta matriz do nosso projeto de game. Open e Delete - que são responsáveis por abrir ou deletar os elementos contidos nas pastas de game. Import New Asset - que tem a função de importar elementos de game como texturas e modelos 3D salvos em outros projetos. Import Package - que é responsável por importar pacotes de códigos, efeitos especiais, texturas e até modelos usados em outros projetos ou pacotes presentes na Engine. Agora podemos ver todos os pacotes que integram a Unity3D, e como primeira opção tem o botãoCustom Pachage que abrirá pacotes criados pelo desenvolvedor. Caso você clique em Custom Pachage a seguinte janela irá surgir: Mas se sua escolha for por um pacote padrão da Unity3D a seguinte janela irá surgir: Nota: "Temos a opção de escolher quais pacotes queremos apenas marcando ou desmarcando a caixa de seleção apresentada ao lado de cada item do pacote". Em ambas as opções depois de escolhido um pacote e clicado em Abrir (no caso de Custom Pachage) ou em Import (no caso dos pacotes padrão), teremos em nossa aba/janela Project a pasta correspondente ao pacote escolhido como mostra a imagem abaixo: Continuando na explicação do menu Assets expandido temos na sequência o botão Export Packageonde é possível exportar códigos e materiais para serem usados em projetos futuros. Para usar essa ferramenta selecione a pasta de game que você deseja exportar: Depois clique no botão Export Package e teremos a seguinte janela: Perceba que a pasta "fase" esta selecionada para exportação, clique em Export e a seguinte janela surgirá: Crie um nome qualquer para seu pacote e clique em Salvar. Pronto! Está salvo um pacote criado por você. A seguir veremos o botão Find References in Scene, esse botão só funciona se algum item de game (Texturas, Códigos, Áudio) estiver selecionado, dessa forma o botão ordenará uma busca para encontrar onde o item selecionado está sendo usado na cena, destacando o objeto de game (Gameobject) que o contém. Para ver essa ferramenta em ação, primeiro clique em um item qualquer contido em nossas pastas de game como demonstrado abaixo: Com o material "mat" selecionado, clique em Find References in Scene para obtermos a seguinte resposta: Está ai, o objeto de game (GameObjects) que contém o material de nome "mat" é o cubo destacado na cena.Continuando a explicação dos botões do menu Assets temos um botão chamado Select Dependencies, esse botão é usado para selecionar todos os elementos de game contidos em uma pasta. Para que essa ferramenta funcione, primeiro clique em uma pasta de game. Depois clique no botão Select Dependencies e pronto todos os itens de game que se encontram dentro da pasta serão selecionados. Agora na sequência temos três botões: Refresh - que atualiza as pastas de game. Reimport - que importa novamente algum pacote que foi perdido por alguma razão. Reimport All - que reimporta todos os pacotes de game importados anteriormente. E finalmente temos o último botão, o Sync MonoDevelop Project que faz uma sincronização da Unity com o programa responsável por escrever os códigos de game no caso o MonoDevelop (dificilmente você usara esse botão já que o MonoDevelop se tornou padrão na Unity3D). Menu Game Object expandido No menu Game Objects temos como primeiro botão o Create Empty, esse botão é responsável por criar um GameObject vazio na cena. Na sequência teremos os seguintes botões: Create Other - que quando expandido nos oferece um leque de objetos de game (GameObjects) para serem criados, veja abaixo a imagem expandida: Center On Children - que tem a função de centralizar um objeto "pai" entre os objetos "filhos".Antes de ver o resultado obtido clicando nesse botão vamos explicar o que é um objeto "pai". Um objeto "pai" é aquele objeto que recebe um ou mais objetos como "filhos", sendo que um objeto "filho" por sua vez precisa obedecer a seu "pai", se o "pai" se move o "filho" também vai se mover.O contrário já não acontece, se o objeto "filho" se mover o "pai" continua imóvel. Então baseado nessa explicação vamos ver o que acontece se clicarmos no botão Center On Childrenna presente situação: Veja que o cubo azul selecionado é o "pai" dos outros dois cubos. Agora vamos clicar em Center On Children e teremos o seguinte resultado: O cubo "pai" foi movido para uma posição entre os dois objetos filhos. Make Parent - esse botão tem a função de tornar um objeto "pai" de outro, para usá-lo primeiro precisamos clicar no objeto que queremos que seja o "filho", depois com a tecla Ctrl pressionada clicamos no objeto que será o "pai" e por fim clicamos no botão Make Parent. Clear Parent - esse botão tem como função quebrar um vínculo que tenha sido criado entre dois ou mais objetos de game pelo botão Make Parent. Para que esse botão funcione clique no objeto "filho" que se deseja excluir do parentesco e clique em Clear Parent. Apply Changes to Prefab - esse botão tem como função aplicar aos objetos pré-fabricados todas as alterações feitas no objeto de referência para a criação do pré-fabricado Break Prefab Instance - esse botão quebra a ligação entre o pré-fabricado e seu objeto de game (GameObjects) de origem. Move to View - tem como função mover qualquer objeto de game (GameObjects) selecionado para frente da área de visão da câmera do desenvolvedor. Align With View - tem a função de alinhar qualquer objeto de game (GameObjects) selecionado com a visão da câmera do desenvolvedor. E por fim temos o Align View to Selected que tem a função de alinhar a câmera de visão do desenvolvedor com o objeto de game (GameObjects) selecionado. O menu Game Object é um dos menus mais usados pelos desenvolvedores de games em Unity3D, é através desse menu que podemos adicionar a nossa cena uma infinidade de objetos de games (GameObject) que unidos darão o efeito visual tão esperado. Nesse tópico não nos aprofundaremos nesse menu para que seja possível apresentar todas as ferramentas contidas na Unity3D, mas, detalharemos o uso desse menu nas aulas em vídeo e no projeto que será desenvolvido no fim desse módulo. Menu Component expandido No menu Component temos como primeiro botão o Add, que têm como função adicionar componentes de game aos objetos em cena, é através dele que adicionamos por exemplo um código a um objeto. Na sequência veremos os seguintes botões: Mesh, Effects, Physics, Navigation, Audio, Rendering, Miscellaneous e Scripts que são justamente os tipos de componentes adicionados aos objetos de game (GameObject). Vamos agora detalhar cada um deles. Menu Terrain expandidoNo menu Terrain temos o botão Create Terrain que como o próprio nome diz tem a função de criar um terreno que poderá ser editado pelo desenvolvedor. Logo abaixo teremos as seguintes opções: Import Heightmap – Raw... - tem a função de carregar um mapa de terreno criado em algum projeto anterior. Export Heightmap-Raw... – com ele podemos exportar o terreno que criamos para usá-lo em qualquer outro projeto. Set Resolution... – aqui mesmo depois de um terreno criado podemos configurar suas propriedades de altura, largura e resolução. Mass Place Trees... - tem a função de controlar o número de árvores em cena. Flatten Heightmap... - como o próprio nome diz tem a função de achatar o terreno de acordo com a numeração determinada pelo desenvolvedor. Refresh Tree and Detail Prototypes - tem a função de atualizar os valores dos protótipos das árvores. Menu Window expandido No menu Window temos algumas limitações disponíveis apenas para a versão pro, então não vamos aprofundá-las. Aqui temos como primeiro botão o Next Window, seguido por Previous Window, esses botões têm respectivamente as funções de avançar e retroceder janelas dentro da Unity3D. Na sequência temos o botão: Layouts - que nos oferece vários layouts da Unity3D, deixando por conta do desenvolvedor escolher qual é a melhor opção. Agora detalharemos uma série de botões que dão acesso às janelas da Unity3D. São eles: Scene, Game, Inspector, Hierarchy, Project, Animation, Asset Store, Animator, Lightmapping e Console. Cada opção dessas tem uma função dentro da Unity3D. As cinco primeiras janelas já foram detalhadas na parte onde falamos da interface, as demais iremos explicar agora: Animation É através da janela Animation que criamos animações dentro da Unity3D, como por exemplo, a animação de abrir e fechar uma porta. Asset Store A janela Asset Store nos dá acesso à loja on-line da Unity3D, mostrando vários games e preços. Animator A janela Animator é uma novidade na Unity3D 4.x, e tem a função de ajudar os desenvolvedores a controlar animações 3D. Lightmapping A janela Lightmapping tem a função de auxiliar o desenvolvedor na criação de sombras estáticas. Console Por último temos a janela Console que mantém o desenvolvedor informado sobre possíveis erros de compilação do código de game. Menu Help expandido No menu Help temos botões não muito envolvidos com a produção de games, nele encontramos informações sobre a Unity3D, atualização da licença, acesso ao manual online da Unity3D, acesso ao fórum dentre outras informações. Criando projeto Agora que já conhecemos profundamente a Unity3D chegou a hora de trabalhar. Para isso clique duas vezes sobre o ícone da Unity3D para iniciá-la. Feito isso vá ao menu File e clique na opção New Project: Na janela que surgir, selecione a aba Create New Project e em Project Location escolha o local onde você irá salvar seu projeto e o nome do projeto como mostra a imagem abaixo: Nós escolhemos o local, C:\Curso_Unity\Projeto\, acrescentando ao final do local o nomeAula_01. Agora é só clicar em Create, e você terá um projeto vazio para trabalhar. Criando e salvando uma cena (fase) Quando criamos um projeto automaticamente criamos uma cena, então para concretizar isso é necessário salvar essa cena, para isso clique em File depois Save Scene ou Save Scene as... Teremos como resultado a janela abaixo, digite o nome da fase e clique em Salvar: Feito isso aparecerá automaticamente um ícone representando nossa cena na aba/janela Project como mostra a imagem abaixo: Criando uma cena Para criar uma nova cena é muito simples clique no menu File depois no botão New Scenecomo mostra a imagem abaixo: Pronto à cena foi criada, porém, é necessário salvá-la para que a mesma apareça na aba/janela Project. Então repita o procedimento de Save descrito acima para concretizar essa ação, salve a cena como Fase2. Assim teremos o seguinte resultado: Introdução ao gamecode A Unity3D trabalha com três linguagens de programação C#, Javascript e Boo, sendo as mais conhecidas, C# e Javascript. A estrutura da Unity3D funciona bem com ambas as linguagens, poupando ao desenvolvedor, preocupações de desempenho. Nesse curso nós da AprendaMais usaremos a linguagem mais popular (Javascript), facilitando assim seu aprendizado. Agora vamos escrever nosso primeiro código que exibirá na tela um "Olá Aluno". Mas antes de escrever nosso código vamos aprender como criá-lo dentro de uma pasta de nosso projeto de game. Primeiro vamos criar uma pasta para guardar os scripts, clique no botão Create na aba/janela Project e depois no botão Folder como mostra a imagem abaixo: Fazendo isso você estará criando uma pasta de game onde poderá salvar códigos, modelos, texturas, etc. Nesse caso criamos uma pasta chamada Scripts como mostra a imagem abaixo: Agora vamos criar nosso primeiro arquivo de código, com a pasta Scripts selecionada clique em Create novamente e escolha o botão Javascript. Feito isso vamos ter um ícone simbolizando o arquivo de código, que nomeamos comoOla_Aluno. Agora clique duas vezes sobre o ícone do script Ola_Aluno, para abrir o programa de edição de código como mostra a figura abaixo: Perceba que a Unity3D gera um código padrão com duas funções a Start e a Update, então agora vamos usá-las. Vamos digitar o seguinte código: Antes de qualquer coisa vamos entender o código, perceba que ele começa com duas funções distintas, a função Start e a função Update. A função Start será executada automaticamente uma única vez antes da função Update, através dela podemos iniciar variáveis. Já a função Update executa um looping a cada frame (quadro de renderização) é através dessa função que o jogo ganha vida. Tanto a função Start quanto a Update são funções padrão da Unity3D e dessa forma não devem ser alteradas. Dentro da função Update temos o código print("String"), esse código como já citado acima é padrão dentro da Unity3D e tem a função de escrever mensagens (Strings). Por essa razão se digitarmos print("Ola_Aluno") teremos como resultado a palavra digitada entreaspas, escrita no rodapé da aba/janela de game. Esse código foi colocado dentro da função Update, mas se fosse colocado em Start também funcionaria. Para executar um código na Unity3D é preciso vincular o código a algum objeto de game (GameObject) para que o mesmo possa ser executado. Então vamos criar um objeto de game (GameObject) vazio que terá apenas uma função receber nosso código. Primeiro clique em GameObject e depois no botão Create Empty como mostra a figura abaixo: Feito isso teremos a seguinte imagem: Perceba que na aba/janela Scene temos uma imagem que contém três flechas, isso significa que existe um objeto de game (GameObject) e as flechas só estão indicando a orientação desse objeto de game (GameObject) no mundo 3D, como mostra a figura abaixo: Essa figura representa os três eixos do mundo tridimensional, precisamos lembrar que mesmo no desenvolvimento de um game 2D o processo de montagem de cena e movimentação é totalmente 3D. Respeitando os seguintes eixos: No módulo destinado a games 3D detalharemos ao máximo o uso do eixo Z, por enquanto vamos nos preocupar apenas com 2 eixos o X e o Y. Sendo o eixo Y a altura do monitor e o eixo X a largura. Então continuando com nosso tópico vamos adicionar o código "Olá Aluno" ao GameObjectvazio que acabamos de criar simplesmente arrastando o ícone do código até o nome do GameObject.Feito isso perceba que na aba/janela Inspector é adicionado um componente ao menu, nele contém características do GameObject vazio, que nesse caso é o código "Ola Aluno", isso significa que ao executar nosso game o código também será executado, clique no botão Playpara executar: Observe que quando executamos nosso game a mensagem: "Olá Aluno" aparece no rodapé da tela, isso significa que o código funcionou. Criando luzes Agora que criamos nosso primeiro código, chegou a hora de fazer coisas mais avançadas, então lembre-se que mesmo sendo um game 2D o ambiente de desenvolvimento é 3D então precisamos adicionar luzes a cena, caso contrário não enxergaremos nada. Para criar uma luz primeiramente clique no botão GameObjects, depois em Create Other, e por fim escolha um dos quatro tipos de luzes que existem a nossa disposição: São elas: Directional light - que faz a simulação da luz do sol iluminando todos os objetos que estão na sua reta como mostra a imagem abaixo: Point light – que é uma luz que brilha em todas as direções a partir do centro iluminando tudo que esteja dentro de sua faixa de atuação como mostra a imagem abaixo: Spot light - que é uma luz em formato de cone que ilumina apenas os objetos que se encontram dentro dos limites desse cone como mostra a imagem abaixo: E por fim: Area light - que é uma luz que ilumina tudo em uma área retangular (Essa luz só pode ser usada na versão Pro). Perceba que todas as luzes têm alguns parâmetros para serem alterados de acordo com as preferências do desenvolvedor, observe na imagem abaixo: Nesse caso o tipo de luz é a Spot light, mas para todas as outras luzes os parâmetros se repetem com pequenas exceções como, por exemplo, a ausência de ângulo e alcance. Veja que é permitido ao desenvolvedor alterar o tipo de luz mesmo sem precisar criar outra fonte de luz, basta clicar no botão Type e mudar o tipo de luz como apresentado na imagem abaixo: Perceba que também podemos mudar a cor da luz. Alterar a sua intensidade. Podemos ligar ou desligar sombras. Podemos desenhar ou não um Halo (Círculo luminoso que se forma envolta de fontes de luz) Dentre outras configurações que veremos detalhadamente nas vídeo aulas. Movimentos via código Agora que aprendemos a adicionar luzes em nossa cena vamos incrementa-la um pouco mais, vamos adicionar GameObjects e movê-los via código. Primeiro clique no botão GameObject, depois vá até Create Other, abrirá uma lista, nela clique em Plane: Fazendo isso criaremos uma plane em nossa cena como mostra a imagem abaixo: Agora criaremos um cubo que irá executar os movimentos que ordenaremos via código. Para isso clique novamente em GameObject, depois em Create Other, na lista que surgirá clique em Cube: Feito isso teremos a imagem abaixo: Caso você tenha criado a luz Spot light proposta no exercicio anterior, exclua- a clicando com o botão direito do mouse sobre seu nome na guia Hierarchy e escolha a opção Delete. Movimento de deslocamento lateral Nessa etapa, criaremos um script que ordene ao cubo que se desloque para a direita. Para criar esse script primeiro vá até a aba/janela Project e deixe selecionada a pastaScripts que já criamos anteriormente, depois clique em Create e em seguida em Javascript. Renomeie o arquivo criado para Movimenta. Pronto, agora dê um duplo clique sobre ele para abrir o Editor de códigos. Com o Editor de códigos aberto digite o seguinte: Pronto agora salve o código clicando no menu File opção Save do Editor de códigos: Na Unity3D arraste esse Script até o cubo que está na cena ou até o nome do cubo que está na aba/janela Hierarchy. De ambas formas o código vai funcionar, agora aperte o botão Executar e veja o código em ação. Movimento de rotação Agora vamos alterar o código de translação para rotacional, use o mesmo código do exemplo anterior fazendo apenas algumas alterações. Primeiro comente a linha de código que move o cubo. Depois escreva o seguinte código: A função Rotate é semelhante à função Translate, porém com a diferença do tipo de movimento, no caso da função Rotate movimentaremos um Gameobject em ângulos. Seu código aceita como parâmetros um Vector3(X,Y,Z) e um Space da mesma forma que a funçãoTranslate. Rotaciona o cubo nos eixos X,Y e Z (Global). E: Rotacionam o cubo nos eixos X,Y e Z (Local). Ao executar o game você verá que agora o cubo gira em todas as direções na velocidade 5, que é o valor de vel. Menu 2D Agora que já brincamos um pouco com algumas transformações de objetos dentro daUnity3D chegou a hora de criar um Menu 2D para nos auxiliar nas transformações do cubo. E porque não ir um pouco além criando um menu interativo onde possamos controlar as três transformações que acabamos de ver? Vamos lá, abaixo veremos a imagem da aplicação que iremos desenvolver: O intuito é quando clicarmos em cada botão a ação descrita no mesmo ser executada. Vamos ver o código da aplicação por inteiro e depois entenderemos aos poucos cada trecho de código. Muito bem, vamos explicar esse código, para começar declaramos as seguintes variáveis: A variável vel controla a velocidade em que as transformações vão acontecer o nome da variável pode ser alterado para o nome que você quiser velocidade, vel2, veloci, enfim. A variável liberaM é responsável por ligar e desligar o botão de movimento do cubo, essa variável pode ter seu nome alterado sem problema algum, desde que o seu tipo seja mantido int (integer). A variável liberaR é responsável por ligar e desligar o botão de rotação do cubo essa variável pode ter seu nome alterado sem problema algum, desde que o seu tipo seja mantido int (integer). A variável liberaS é responsável por ligar e desligar o botão de escala do cubo essa variável também pode ter seu nome alterado sem problema algum, desde que o seu tipo seja mantido int (integer). Agora na função Start é preciso inicializar essas variáveis com algum valor. Por exemplo: A variável vel será iniciada com o valor de 5, que como já vimos adiciona ao cubo uma velocidade aceitável. As variáveis liberaM, liberaR e liberaS sempre iniciarão com o valor de -1. A seguir temos a função Update com os seguintes códigos: Os três códigos acima tem uma função específica, verificar se a condição de liberação desencadeada pelos botões é satisfatória, se sim, a transformação de cada botão sobre o cubo é liberada. Por exemplo: Se a condição liberaM for satisfeita o cubo irá se mover. Por último vamos a função que é responsável por criar nosso Menu 2D que é a função OnGUI(). A função OnGUI da mesma forma que a função Start e Update é padrão dentro da Unity3D e desta forma não deve ser modificada, ela é executada desde o momento que se inicia o código até o final. Mas devemos lembrar que suas ações devem ser executadas dentro da função Update. Essa função leva o nome de OnGUI porque a definição de GUI é: Interface Gráfica do Usuário. Ou seja,GUI trabalha com a parte dos programas que interagem diretamente com os usuários, como os botões, área de textos, etc. Essa função também está no manual online da Unity3D citado anteriormente. Além de botões podemos criar dentro dessa função, labels, Grafical Box, textfields, entre outros elementos para interagir com o usuário do game. Vamos analisar nosso código: Primeiramente criamos uma label com o nome de Menu 2D, uma label é um rótulo ou etiqueta que serve para descrever alguma coisa, no nosso casoalertar o jogador que ali existe um menu. Esse código funciona da seguinte forma: O código GUI.Label cria uma label que respeita dois parâmetros, um de posição largura e altura, e outro para imagem ou nome da label. O primeiro parâmetro é adicionado através do código Rect(X,Y,Width,Height), esse código fornece para a GUI.Label a posição X e Y de onde deve ser desenhada a label com a largura e altura da mesma. O segundo parâmetro é um texto (String) colocado entre aspas ou a referência de uma textura(Image). Depois temos os código de criação e ação dos botões do nosso menu: Esse código cria botões que da mesma forma que a label tem seu posicionamento e tamanho determinados de forma retangular Rect(X,Y,Width,Height), tendo sua posição definida por X e Ydepois sua largura e altura, e por fim um texto de identificação ou uma imagem. Perceba que dentro dessa condição colocamos nossa variável liberaM sendo multiplicada pelo valor -1, isso foi feito para ligar e desligar o efeito de movimento sobre o cubo. Afinal essa condição significa que cada vez que clicarmos no botão Mover a variável liberaM vai mudar seu valor de -1 para 1 e depois de 1 para -1, que matematicamente é a operação de (1 x -1). Input settings Muito bem, aprendemos a movimentar objetos via código e a criar menus que controlem ações dentro do game. Chegou a hora de aprender a mover objetos dentro do game usando o teclado, o mouse e o joystick. Mas para que isso possa ser feito precisamos conhecer as configurações de input da Unity3D. Para isso vá até o botão Edit, depois clique em Project Settings e na lista que surgirá clique em Input: No canto direito da tela na aba/janela Inspector irá surgir a seguinte lista de inputs: Clicando em qualquer um desses botões teremos uma lista descritiva com o nome de cada input e qual as teclas que o mesmo representa. Abaixo temos a opção Horizontal com suas opções que mostram que o eixo horizontalpode ser acessado pelos botões seta esquerda, seta direita e botões A e D. Agora chegou a hora de colocar tudo isso pra funcionar. Teclado Agora vamos usar as teclas do nosso teclado para mover objetos dentro do game. Mas antes de iniciarmos precisamos fazer alguns ajustes no nosso projeto anterior. Primeiro clique no cubo que usamos para os outros exemplos, feito isso na janela Inspector irá aparecer todas as propriedades do cubo inclusive os códigos que estão contidos nele. Observe na imagem abaixo: Agora vá até Movimenta (Script) logo acima do botão Add Componet e clique no botão com o desenho de uma catraca como mostra a imagem abaixo, feito isso aparecerá na tela um menu suspenso nesse menu clique em Remove Component para retirar o código anterior do cubo e pronto, se executarmos o game nada acontecerá. Agora vamos criar um novo script, vamos chamá-lo de InputMove. Primeiro selecione nossa pasta de game Scripts, depois clique em Create na aba/janelaProject, e escolha a opção Javascript, para o arquivo digite o nome de InputMove. Está criado o arquivo de código, no novo script digite o seguinte código: Mouse Agora que já movimentamos o cubo com o teclado vamos usar o mouse para reproduzir novamente esse movimento, mas antes vamos verificar o input settings do mouse. Observe a imagem abaixo: Novamente em nossa aba/janela Inspector vamos analisar as configurações do mouse no eixo X. Aqui o que nos interessa é o nome de acesso do eixo X do mouse. Agora que sabemos que o nome de acesso desse eixo é Mouse X, vamos programar. Mantenha seu código de movimento via teclado como está apenas altere as seguintes linhas de código na função Update: A primeira linha de código cria uma variável "x" onde atribuímos o valor da multiplicação da variável vel pelo valor do movimento do mouse no eixo X. A segunda linha apenas usa o valor obtido nessa variável para mover o cubo para a direita e para a esquerda. Controle A movimentação com controle é muito simples na verdade não muda quase nada do que já foi apresentado, para usar o controle / joystick primeiro é necessário fazer algumas mudanças no input settings. Adicione no InputMananger o número necessário para criação dos botões do joystick. Observe a imagem abaixo: Depois ajuste o nome do eixo ou botão criado como mostra à imagem abaixo: E pronto, agora é só usar a referência "quadrado" em nossos códigos. Perceba que esse código é um pouco diferente dos anteriores, nele primeiro criamos uma condição que analisa se botão "0" do controle foi pressionado, se foi movemos o GameObject. Note que o número do botão do controle pode ser editado pelo desenvolvedor. Execute o código, utilizando primeiro o mouse depois o teclado, para testar com o joystick precisaríamos de um conectado ao computador: Qualidade de renderização Agora vamos falar de um tema muito discutido e estudado pelos games designers, a qualidade da renderização (Criação da cena). Afinal já foi o tempo de jogar um game todo serrilhado com uma qualidade gráfica péssima que nunca chegaria nem perto da realidade. Então a Unity3D como uma Game Engine de primeira linha que é, resolveu disponibilizar aos seus usuários, meios de configurar o visual do game para que o mesmo seja único. Para acessar essas configurações clique em Edit, depois em Render Settings: Teremos como resultado a seguinte imagem na aba/janela Inspector: No menu Render Settings existem várias opções para deixar seu game ainda mais profissional, podemos ajustar por exemplo se o game terá ou não o efeito de nevoa (Fog) que surge sobre os objetos conforme a distância da câmera e do objeto aumenta. Podemos definir uma cor para essa nevoa (Fog Color), como ela irá atuar sobre os objetos do game, atuando como linear ou exponencial (Fog Mode). Podemos definir também uma textura de céu (Skybox Material), cor da luz ambiente (Ambient Light), entre outras configurações. Além dessas configurações podemos manipular a maneira que nosso game será renderizado ajustando algumas outras ferramentas como, por exemplo, a emulação de gráficos ou Graphics Emulation. Veremos então um pouco disso na prática! Clique em Edit, depois em Graphics Emulation: Agora é só escolher qual opção você quer para emular seu game nenhum shader, shader model 3, 2, 1, ou directX 7. Se você quer fazer um jogo com qualidade comercial aconselho o Shader Model 3. Além dessas opções existe mais uma ferramenta para melhorar a qualidade dos nossos games, essa ferramenta é o Quality. Para acessá-lo clique em Edit, depois em Project Settings, e por fim em Quality: Teremos na aba/janela Inspector algumas configurações de qualidade: Perceba em Quality Settings podemos escolher a qualidade do nosso game indo de Fastest(Execução rápida com qualidade visual baixa) até Fantastic (Execução mais lenta com qualidade impecável). Perceba que na imagem acima a opção Good foi escolhida e logo abaixo vemos as configurações dessa escolha, com Pixel light = 2, Qualidade de textura = Full Res, etc. Nota: "Todos os dados apresentados em Quality Settings podem ser ajustados de acordo com as necessidades do desenvolvedor." Game Objects Vamos entender o que seria um Game Object, se levarmos a tradução ao pé da letra um game object não passa de um objeto de jogo. Isso é muito vago afinal no processo de desenvolvimento de game existem vários objetos ou elementos para fazer com que o jogo seja produzido. A Unity3D tem uma definição bem específica sobre isso, um Game Object é todo elemento de cena que recebe ao menos um component o transform. Mas o quê seria esse taltransform? Simples, um transform é um componente, que manipula ações em um mundo 3D como deslocamento, rotação, escala. Components Como falar de Game Object e não falar de componentes, os components dão vida ao game. Um código é considerado um componente, afinal ele é adicionado ao GameObject lhe atribuindo modificações não é? Efeitos de partículas também são considerados components, a física adicionada aos games, o áudio. Layers Em relação aos Layers, essas são mais usadas por câmeras ou por luzes. No caso do uso de Layers com luzes podemos escolher o que deve ou não ser iluminado. Para criar uma Layer basta clicar no botão ao lado de Layer na aba/janela Inspector, depois clique em Add Layer e digite seu nome "heroi". Agora o Layer está pronto para ser usado. Introdução a arte 2D Agora vamos falar um pouco sobre arte 2D e como devemos proceder para criar mídias 2Dde qualidade para uso em games. Antes de qualquer coisa precisamos ter conhecimento dos tipos de imagem, quanto "pesam" em uma aplicação complexa como um game e qual a sua qualidade visual. Falando de games existem 3 tipos de texturas que os games aceitam bem inclusive os games feitos emUnity3D que são: JPG, PNG e BMP. Vamos explicar cada formato de textura: BMP O tipo de imagem BMP tem uma boa qualidade visual dependendo do número de pixels da imagem, porém o seu peso é inviável para aplicações que venham a ser executadas em aparelhos com capacidade de processamento limitada. JPG O tipo de imagem JPG tem uma característica excelente, que é a de ser muito leve. Isso explica sua popularidade, que fez com que fosse adotada como padrão de fotos de máquinas digitais, porém existe um problema quanto a qualidade uma imagem JPG quando manipulada perde com facilidade sua qualidade. PNG As imagens nesse formato são sem dúvida a melhor opção para os desenvolvedores de games, além de trabalhar com transparência a qualidade das imagens é ótima e não sofre perda de qualidade com a manipulação (compressão, por exemplo). É claro que existem desenvolvedores que preferem trabalhar mesclando PNG e JPG para games 2D eBMP, PNG e JPG para texturas de modelos 3D, mas isso não é uma regra, cada desenvolvedor precisa testar cada tipo de arquivo até chegar a uma conclusão do que é melhor em cada projeto. Pintura digital (Photoshop/Gimp) Muito bem vamos explicar agora de maneira resumida como funciona a pintura digital em programas como Photoshop e Gimp. Vamos usar o Photoshop por ser o programa mais popular, porém no Gimp o processo produtivo é o mesmo mudando apenas nomes e o local de poucas ferramentas. Em nossa próxima vídeo aula vamos ensinar como passar de um desenho preto e branco para um colorido. Veja as seguintes imagens: Sprites Em relação à sprites precisamos deixar claro alguns pontos, a Unity3D é uma game engine3D e não 2D então para criação de sprites com ela é necessário fazer isso de maneira fake(não habitual) Precisamos pegar uma textura e adicionar em um plane como mostra a figura abaixo: Dessa forma podemos fazer uma simulação de sprites. Materials Agora que falamos sobre imagens e sprites vamos falar sobre materials. Os materials são responsáveis por aplicar textura em todos os GameObjects em cena, é através desses materials que podemos adicionar não só uma textura, mas também um shaders aosGameObjects. Nota: "Em Unity3D damos o nome de texturas para as imagens" Antes de criar um material vamos criar uma pasta para guardar os materiais criados: Selecione a pasta Assets, clique em Create na aba/janela Project e escolha a opção Folder, digite para esta pasta o nome "Material". Agora para criar um material é muito simples, primeiro você seleciona a pasta Material, clica em Create na aba/janela Project, escolhe a opção Material e digita um nome para o material "Teste". Ao se criar um material é exibido na aba/janela Inspector informações sobre esse material veja na imagem que segue: Esse material é o básico criado pela Unity3D ele simplesmente aceita uma textura difusa (a textura visível no modelo) e aplica ao GameObject, é claro que como tudo na Unity3D essematerial pode ser customizado até atingir um alto grau de qualidade, mas nesse módulo não vamos focar nessa parte por ser um assunto um tanto quanto complexo para quem está iniciando. Vamos criar uma pasta chamada Texturas para importamos as imagens de textura para esta pasta. Selecione a pasta Assets, clique na aba Create e escolha a opção Folder, digite o nome deTexturas para esta pasta: Agora clique com o botão direito do mouse sobre a pasta Texturas, no menu suspenso que aparece, escolha a opção Import New Assets, procure pelo arquivo de imagem chamado cenagame.jpg que se encontra na pasta \\arquivos-cursos\unity\, selecione este arquivo e clique no botão Import. Vamos adicionar a textura cenagame ao material criado anteriormente: Selecione a pasta Material e clique sobre o material Teste, agora clique no quadrado onde está escrito None Texture, na janela Select Texture escolha uma textura para o material, nós vamos escolher a imagem cenagame importada anteriormente. Pronto nosso material já tem uma textura e está pronto para ser usado em cena. Podemos aplicar esse material em uma plane ou um cube arrastando o ícone do material para o GameObject como já vimos. Introdução à animação A palavra animação sugere movimento, alegria, é o que dá dinâmica ao jogo. Em games não é muito diferente, a animação é o ato de proporcionar movimentos a personagens ou objetos deixando nosso game com mais "vida" e empolgante. Afinal que graça teria um jogo onde todos os personagens estão estáticos? Nenhuma não é mesmo. Nos games existem dois tipos de animação, a animação 2D e a 3D, nesse módulo nosso foco é o 2D, sendo assim, vamos explicar detalhadamente como ela funciona. Criação de texturas comuns e animadas A criação de uma textura comum não tem segredo um prédio é uma textura estática, você não precisa manipular essa textura via código para que exista uma animação, o natural dela é ficar estática mesmo. Como exemplo, vamos criar uma textura de montanhas. Veja a imagem abaixo: Perceba que só foi preciso usar as técnicas de sombreamento ensinadas na vídeo aula do tópico pintura digital. Agora uma textura com animação de personagens ou objetos 2D que não sejam estáticos em games, é muito parecida com a animação feita para criar desenhos como Ben 10 e Bob Esponja por exemplo. Em desenhos animados é preciso desenhar um personagem várias vezes em posições diferentes, depois empilhar os desenhos e ir passando imagem por imagem bem rápido para termos uma ilusão de movimento. Em games 2D a única diferença é que nós podemos desenhar o personagem em várias posições e agrupar essas imagens uma ao lado da outra e pedir para que a Unity3D faça o papel de passar as imagens rapidamente. Para entender melhor veja a imagem abaixo: Perceba que desenhamos o nosso personagem de forma idêntica apenas alterando a posição do corpo, isso vai nos proporcionar uma ilusão de que o personagem está caminhando. Veja que nossa imagem nada mais é que uma imagem grande contendo 4 imagens menores com largura e altura iguais, isso é importante na hora de criar a animação para que a Unity3D saiba em que quadrante exato está o personagem, e desta forma possa mover o offset de maneira satisfatória. Mas agora você deve estar se perguntando o que é Offset? O Offset é capaz de controlar as coordenadas X e Y (Altura e Largura) das imagens podendo mover uma imagem na horizontal e na vertical. Veja um exemplo de offset em X: A imagem se desloca em
Compartilhar