1
Revista Eletrônica da Faculdade Metodista Granbery
http://re.granbery.edu.br - ISSN 1981 0377
Curso de Sistemas de Informação – 2013
GAME ENGINE UNITY 3D
*1 Fillipe Martins Van Keulen
*1 Marcos Vinicius Grossi de Mattos
*1 Vítor Daniel Rosa Cabral
*2 Sérgio Muinhos Barroso Lima
Resumo. O mercado de jogos eletrônicos vem apresentando um crescimento
significativo nos últimos anos. O desenvolvimento da tecnologia e da própria
engenharia de software tem permitido a criação de ferramentas que agilizam e
aumentam a qualidade do processo de desenvolvimento de jogos, dentre elas, as
game engines. Como resultado, surgem jogos com qualidade cada vez maior,
oferecendo uma experiência cada vez mais realista, tornando-se mais atrativos para
pessoas de diversas faixas etárias. Neste trabalho, é apresentada a estrutura básica da
game engine Unity 3D.
PALAVRAS-CHAVE: Unity 3D, jogos eletrônicos, desenvolvimento de jogos,
ferramentas para jogos, máquinas de jogos.
Abstract. The game market are showing a significative growing on the last years.
The technology and engineering advances are supporting the development of tools
that increase the speed and the quality of game development, among them, starring,
the game engines. As result, are appearing several games with high quality, offering
stunning and realistic experiences, being more attractive to the people of several
ages. This work presents the game engine Unity 3D.
KEY-WORDS: Unity 3D, eletronic games, game development, game tools, game
engines.
*1 Bacharel em Sistemas de Informação, Faculdade Metodista
[email protected].
*2 Mestre em Ciência da Computação, UNICAMP, [email protected].
Granbery,
2
1 INTRODUÇÃO
Desde o início do processo de desenvolvimento de software, o avanço da tecnologia
vem possibilitando aos seres humanos reproduzir nas máquinas situações do mundo real. Essa
evolução contribuiu para a melhoria dos sistemas, que passaram a ser mais interativos e a
simular, cada vez melhor, situações reais com as quais os usuários poderiam se deparar. Logo,
as máquinas passaram a reproduzir fenômenos como força da gravidade, aceleração
centrífuga, efeitos de iluminação, luz, sombras, sons e começaram a surgir softwares com
grupos de funcionalidades específicas para domínios específicos, como, por exemplo, as
bibliotecas de funções matemáticas ou físicas. Surgiam assim as game engines.
A palavra engine significa motor, em português, e, de acordo com o dicionário
Priberam da Língua Portuguesa (PRIBERAM, 2012), tem por definição “Que dá movimento;
Aquilo que induz ou instiga”.
Na área do desenvolvimento de sistemas, engines podem ser comparadas a grandes
bibliotecas que agrupam funcionalidades de um mesmo contexto. À medida que o
conhecimento envolvido neste contexto evolui, pode ser necessário alterar essas bibliotecas,
para acrescentar funcionalidades, e, por isso, as engines também estão sujeitas a princípios de
engenharia de software, como os padrões de projetos (EBERLY, 2005).
A utilização de engines agiliza o processo desenvolvimento de aplicações para
contextos específicos, pois concentra todas, ou a maior parte das funcionalidades que são
inerentes a esse contexto.
Muitas aplicações (inclusive outras engines) são desenvolvidas através da combinação
de funcionalidades de várias engines distintas. Esse trabalho aborda estrutura básica da game
engine UNITY 3D, que vem despontando como uma das mais importantes game engines do
mercado.
2 A UNITY 3D
Há, no mercado, diversas game engines, cada uma com seus pontos fortes e fracos, e
cada uma delas oferece vários tipos de licenças, que podem ser compradas e utilizadas pelos
desenvolvedores. Geralmente, o preço de cada licença varia de acordo com as funcionalidades
disponíveis em cada tipo de licença. A game engine Unity 3D, que, atualmente, se encontra na
sua versão 4, vem ganhando bastante visibilidade no mercado nos últimos anos.
3
Quintella (2012) descreve a Unity3D como um motor gráfico que se destaca pelo
sucesso que vem alcançando e ainda alguns dos motivos responsáveis por este sucesso:
[...] Sua interface intuitiva, seu baixo custo comparativo, e sua grande de
gama de funcionalidades, podendo listar dentre elas: simulação física,
capacidade de importação de uma grande quantidade de formatos de
arquivos 3D, exportação para web, linguagem de scripts fácil e poderosa,
animações e suporte a diversos tipos de esqueletos, etc. Além disso o motor
possui um editor fácil e poderoso e uma ativa comunidade de
desenvolvedores independentes que engloba desde empresas a entusiastas.
(QUINTELLA, 2012)
Inicialmente, disponibilizava apenas duas versões: Unity Pro e Unity. A primeira pode
ser descrita como a versão completa, pois oferece todas as funcionalidades desenvolvidas pela
equipe Unity Technologies. A segunda é a versão gratuita, disponibilizada apenas em 2009,
com o intuito de divulgar a ferramenta e ampliar o público-alvo. Oferece funcionalidades
mais limitadas e pode ser usada para fins educacionais.
Devido à ascensão das tecnologias mobile e à crescente participação no mercado
conquistada pela ferramenta, atualmente a Unity 3D é oferecida ao mercado em cinco versões:
Unity Pro, Unity iOS, Unity iOS Pro, Unity Android Pro e Flash Unity Pro. Substituindo a
versão gratuita mencionada, a Unity Technologies oferece as versões Unity Pro e Unity iOS
Pro, com todas funcionalidades disponíveis para utilização gratuita durante trinta dias
(UNITY TECHNOLOGIES, 2012).
A Unity não fornece um sistema de criação de objetos 3D; quase todos os objetos são
criados fora da Unity (WATKINS, 2011) através de softwares como Blender, Maya, Cheetah
e outros.
As funcionalidades disponíveis nesta ferramenta, sua interface de fácil aprendizado e a
experiência prévia, nesta ferramenta, dos alunos (durante o grupo de estudos sobre o
desenvolvimento de jogos e aplicativos móveis da Faculdade Metodista Granbery)
influenciaram positivamente a escolha da mesma para o desenvolvimento deste trabalho.
Assim como outras engines e IDE’s1, a Unity3D possui um layout customizável
(GOLDSTONE, 2009), pois os painéis de sua interface podem ser reorganizados, permitindo
ao desenvolvedor encontrar a melhor foram de trabalhar, como pode ser observado na
ilustração 1. Possui também uma interface de fácil manipulação, onde se pode criar e
manipular objetos, scripts, importar arquivos de outros softwares, como objetos 3d, imagens,
texturas, animações, entre outros. A seguir, as principais funcionalidades da Unity3D são
exploradas.
1
Sigla para Interface de desenvolvimento
4
Ilustração 1 - Interface da Unity 3D.
FONTE: (MANUAL, 2012)
Na ilustração 1, a região marcada com o texto Project representa o painel Project
Browser da interface. A região marcada com o texto Scene representa o painel Scene View. A
região marcada com o texto Toolbar representa a barra de ferramentas. O texto Inspector
representa o painel Object Inspector da ferramenta. E o texto Hierarchy representa o painel
Hierarchy da ferramenta. A seguir serão explicadas as funções de cada um desses painéis.
Através da aba Scene View, é possível manipular os objetos da cena e navegar por ela
com as Transform Tools. No canto superior direito da ilustração 2, há um botão parecido com
uma cruz, com os eixos X, Y e Z marcados de vermelho, azul e verde, respectivamente. Este
objeto é o Scene Gizmo. Ele mostra a orientação atual da cena e permite ao usuário alterar o
ângulo de visão da Scene View (UNITY, 2012).
Ilustração 2 - Scene View.
FONTE: (UNITY, 2012)
5
A aba Hierarchy (ilustração 3) exibe todos os objetos que se encontram na cena atual
(WATKINS, 2011) de forma hierárquica, como o nome sugere. À medida que objetos são
adicionados ou removidos da cena, eles, respectivamente, aparecem ou desaparecem dessa
aba.
Ilustração 3 - Aba Hierarchy da Unity.
FONTE: (UNITY, 2012)
Os objetos relacionados hierarquicamente na cena são representados nesta aba pelas
setas localizadas à esquerda de cada nome de objeto. Clicando em uma destas setas, a
ferramenta exibe os objetos subordinados ao objeto principal, por exemplo, o objeto
roofing_a, que tem como subordinado o objeto metal, conforme exibido na ilustração 3.
A aba Inspector (ilustração 4) exibe as informações, atributos físicos, componentes e
scripts adicionados, de um objeto selecionado. Essa aba permite ainda alterar os atributos
físicos e até algumas variáveis dos scripts e componentes adicionados a esse objeto (UNITY,
2012).
Ilustração 4 - Aba Inspector da Unity.
FONTE: (UNITY, 2012)
6
Na aba Project Browser, encontram-se todas as pastas e arquivos do diretório onde o
jogo está sendo desenvolvido. O Project Browser é basicamente a pasta de Assets2, que se
encontra no diretório do jogo (WATKINS, 2011).
A barra de ferramentas da Unity (ilustração 5) é formada por cinco grupos de botões:
Transform Tools, Transform Gizmo Toggles, Play/Pause/Step Buttons Layers Drop-Down e
Layout Drop-down (UNITY TECHNOLOGIES, 2012).
Ilustração 5 - Barra de ferramentas da Unity 3D.
FONTE: (UNITY, 2012).
As Transform Tools servem para alterar a forma de um objeto e sua posição. Seu
primeiro botão é a ferramenta “mão”. Esta ferramenta permite navegar pelo cenário. Pode ser
usada junto com a tecla Alt, permitindo a rotação do cenário, ou com a tecla Shift, permitindo
dar zoom na scene view. Seu segundo botão corresponde à ferramenta de movimentação. Esta
função habilita a movimentação de um objeto já alocado no cenário. A movimentação é
realizada através dos eixos em ordem de reposicionar o objeto na cena. O terceiro botão
corresponde à ferramenta de rotação, e funciona da mesma forma como a ferramenta de
movimentação, mas, ao invés de movimentá-lo, irá girá-lo em seus eixos. O último botão, a
ferramenta de escala, serve para aumentar o tamanho ou a escala de um objeto no cenário
(GOLDSTONE, 2009).
A barra Transform Gizmo Toggle possui botões que afetam a Scene View de forma que
altere as setas dos três eixos cartesianos. Os botões Play/Pause/Step servem para controlar a
pré-visualização do jogo na Game View. A combobox Layer Drop-down controla quais
objetos serão visíveis na Scene View, atribuindo nomes a eles. Já a combobox Layout Dropdown permite alterar / reorganizar a apresentação visual da interface (MANUAL, 2012),
dividindo as telas de acordo com as opções oferecidas, enquanto a aba de visualização de cena
(Scene View) é o local onde todo o projeto é construído na Unity (GOLDSTONE, 2009).
A Unity3D é organizada em torno dos game objects. Segundo Creighton (2010), game
objects são todos os elementos que ajudam a melhorar a aparência do seu jogo (câmeras,
2
Assets são os recursos disponíveis (bibliotecas, imagens) no projeto, e podem ser acessados na
aba Project
7
luzes, modelos, prefabs3, etc.). Podem ser tanto coisas tangíveis, tais como objetos que o
jogador poderá manipular, ou com os quais ele poderá interagir, como objetos da cena,
personagens, dentre outros, quanto intangíveis, itens que só os desenvolvedores podem
manipular, como câmeras, luzes, partículas. É possível adicionar componentes como scripts,
atributos físicos, efeitos especiais aos game objects, para que eles deixem de ser apenas
simples objetos na cena. São o tipo mais importante de objetos na Unity, ou seja, o
desenvolvimento de jogos com Unity depende do entendimento do conceito de game objects.
A ilustração 6 mostra um cubo como exemplo básico de game object, no caso, um
cubo, em uma cena.
Ilustração 6 - Exemplo básico de game object na Unity.
FONTE: (UNITY, 2012).
Um game object pode receber mais de um componente, por exemplo, um corpo físico,
um collider, que realiza o contato do objeto com outros, gerando ações dependentes dos
scripts utilizados; também pode-se usar um componente de áudio, adicionando um efeito
sonoro ao objeto.
Quando os componentes são adicionados a um game object, podem ser alterados na
aba Inspector quando seu respectivo objeto estiver selecionado, uma vez que passam a ser
propriedades deste objeto.
Já um prefab é um game object reutilizável (WATKINS, 2011), que fica localizado na
aba Project. Quando um prefab é colocado na cena, é criada uma instância do mesmo,
preservando-se o prefab sempre em Project. Essas instâncias adquirem a relação de herança
com o prefab. Em situações em que objetos precisam ser utilizados várias vezes no jogo ou na
cena, o uso de prefab é essencial. Além disso, devido á relação de herança existente entre as
3
Prefab É um conceito utilizado pela Unity que permite instanciar um game object diversas vezes
criando uma relação de herança entre as instâncias e o prefab. Prefabs serão explicados com mais
detalhes adiante.
8
instâncias e o prefab, ao modificar um ou mais atributos do prefab todos os objetos
“herdeiros” são alterados ao mesmo tempo (UNITY, 2012).
A iluminação é crucial para qualquer cena de um jogo. Ela ajuda a perceber os
detalhes de toda a cena, cores de objetos, texturas. Na Unity3D, as luzes podem ser tanto
game objects quanto componentes (MANUAL, 2012).
Projetistas mais experientes conseguem utilizar mais de uma luz em um mesmo local
da cena, garantindo um melhor visual da mesma. Mudar as propriedades de uma luz, como a
cor, o alcance, pode alterar completamente o modo como a cena é visualizada. A ilustração 7
mostra a utilização de dois tipos diferentes de luz na mesma cena.
A Unity oferece quatro tipos de luzes: área, directional, spot e point lights. Area Lights
são usadas na construção de lightmaps4 e, quando utilizadas, são vistas como um retângulo.
Sua iluminação se estende por toda a área deste triângulo. Luzes do tipo directional light são
colocadas muito distantes da cena e afetam todo o cenário. Não importa o posicionamento
onde se encontra a luz direcional, ela sempre tomará todo o cenário, mesmo que esteja
embaixo da cena. A Spot Light é um tipo de iluminação que funciona através de um cone, isto
é, tudo o que estiver dentro deste cone, será iluminado. Já um Point Light (ponto de luz, em
português) ilumina todas as direções com um brilho semelhante, porém este brilho possui um
alcance máximo (MANUAL, 2012).
Ilustração 7 - Exemplo de utilização de mais de uma luz na mesma cena.
FONTE: (UNITY, 2012).
4
Lightmaps são mapas bidimensionais que guardam um tipo de informação, a luz, que quando
usados sob um local do jogo, irá iluminar e/ou escurecer alguns pontos.
9
Em jogos eletrônicos, as câmeras são essenciais para descrever o mundo para o
jogador. Podem ser colocadas em qualquer parte do jogo, animadas, aplicadas a personagens
ou apenas como objetos da cena (GOLDSTONE, 2009), como mostra a ilustração 8.
Um jogo necessita apenas de uma câmera, embora o uso de mais câmeras possa criar
uma visão para plataformas multi-jogador (WATKINS, 2011), dividindo a imagem em duas
ou mais visualizações, representando a visão de cada jogador. Podem ser usadas, também,
para criar eventos durante o jogo. As câmeras, assim como as luzes, também podem ser tanto
game object quanto um componente.
Ilustração 8 - Exemplo de utilização de câmera na Unity.
FONTE: (UNITY, 2012).
A base geomorfológica de um jogo é o terreno onde ele se desenvolve. Terrenos são
game object que só podem conter texturas e objetos como grama e árvores (WATKINS,
2011). Eles são a base de todo cenário, onde ficarão os objetos, onde o personagem irá se
locomover. A ilustração 9 mostra um exemplo de terreno na Unity.
Ilustração 9 - Exemplo de terreno na Unity.
FONTE: (UNITY, 2012).
10
Um terreno precisa de um contexto aéreo. As Skyboxes servem para criar um céu para
a cena (WATKINS, 2011), provocando uma impressão mais realística. Na Unity todos os
skyboxes são inanimados.
A ilustração 10 mostra a qualidade da cena provocada pela aplicação de um Skybox.
Ilustração 10 - Exemplo de aplicação de um skybox em uma cena.
FONTE: (VIMALTUTS).
Na construção de qualquer jogo que envolve um ambiente ao ar livre, um editor de
terreno é um requisito obrigatório (GOLDSTONE, 2009). No editor de terrenos da Unity,
pode-se criar ou alterar terrenos e todos os seus componentes, árvores, rochas, plantas e
texturas. Quando um terreno é criado, é adicionado uma toolbar dentro da aba Inspector,
exibida na ilustração 11, logo abaixo.
Ilustração 11 - Terrain Engine.
FONTE: (UNITY, 2012).
Essa ferramenta serve para se trabalhar a superfície (GOLDSTONE, 2009), nivelando,
aumentando ou reduzindo a altura do terreno (ilustração 11). Para aumentar a altura da
superfície marcada pelo pincel da ferramenta, basta clicar no local desejado. Para reduzir a
altura, deve segurar o botão SHIFT e clicar no local desejado.
11
Ilustração 11 - definição da topologia do terreno.
FONTE: (UNITY, 2012).
Além disso, é possível a definição e uma cobertura vegetal, fornecendo meios para
adicionar, editar ou remover árvores (GOLDSTONE, 2009). Para adicionar novas árvores,
como mostrado na ilustração 12, deve-se clicar em Edit Trees, e, logo após, na opção Add
Trees. Feito isto, basta selecionar o modelo desejado e aplicar no terreno através do pincel. A
Unity vem com dois modelos básicos de árvores. Também é permitido colocar diversos tipos
de árvores no terreno. Na aba Inspector pode se definir a quantidade de árvores que serão
adicionadas por clique, a proximidade de uma árvore para outra e a variação de tamanho e
largura das árvores que serão adicionadas.
Ilustração 12 - Árvores inseridas em um terreno.
FONTE: (PARKER, 2011).
Bastante similar à ferramenta Place Trees, esta opção permite adicionar e editar
detalhes como pedras, plantas e outros tipos de folhagens (GOLDSTONE, 2009).
12
Cenários aquáticos também são possíveis. A Unity possui vários tipos de água no
pacote Standard Assets (MANUAL, 2012). Os modelos de água presentes são diferentes,
dependendo da versão utilizada.
A única forma de adicionar água ao cenário é localizando-a na aba Project, Standard
Assets, na pasta Water (Basics). Após selecionar o tipo desejado de água, basta arrastá-lo para
a Scene View no local desejado, como mostra a ilustração 13.
Para configurar a escala da água, basta editar os atributos na aba Inspector. Na Unity,
não é possível alterar a forma da água, como para a construção de um rio. Existem vários
plugins para a Unity que realizam esta tarefa, como o Smart Water, que facilita a criação de
água no cenário, definindo efeitos a níveis profissionais em poucos minutos.
Ilustração 13 - Água na Unity Pro.
FONTE: (UNITY, 2012).
Partículas, também usadas em outros meios de entretenimento, como filmes e
animações, são responsáveis por gerar qualquer tipo de efeito especial, como fumaça,
tempestades, chuvas e até explosões. Caracterizam-se como pequenos planos ou outro tipo de
forma (dependendo da configuração de seus atributos), que são emitidos por objetos
(WATKINS, 2011) ou pelo cenário.
O “emissor de partículas” é o responsável por instanciar as partículas na cena
(GOLDSTONE, 2009). Também é o responsável por definir de que forma estas partículas
serão emitidas, sua energia, rotação, direção e velocidade de emissão nos três eixos, além do
seu alcance de emissão.
O “animador de partículas” é responsável por configurar como as partículas reagirão
de acordo com o tempo em que são instanciadas (GOLDSTONE, 2009) e as cores das
partículas que serão exibidas.
13
A opção Particle Renderer configura a aparência das partículas (GOLDSTONE,
2009). Nessas configurações pode-se alterar a forma da partícula, que inicialmente é um
pequeno cubo, para esferas, ou uma forma alongada, como a usada para executar a chuva no
estudo de caso deste trabalho.
Quando um sistema de partículas é usado próximo a um objeto sólido, as partículas,
por padrão, irão atravessar este objeto. Para evitar que isto ocorra é necessário utilizar o
World Particle Collider. O World Particle Collider é usado para colidir as partículas contra
tudo que possua um corpo físico (MANUAL, 2012). A ilustração 14 mostra um exemplo de
utilização do World Particle Collider:
Ilustração 14 - Exemplo de utilização do World Particle Collider.
FONTE: (UNITY, 2012).
O áudio é um elemento indispensável nos jogos de hoje, pois ajuda a melhorar a
qualidade de animações e dos efeitos especiais, sem contar os diálogos dos personagens.
Segundo Rouse (2005), os áudios fornecem complementos para as cenas. Para lidar com sons,
a Unity precisa de três estruturas: audio clip, audio source e audio listener. Todo som
importado para a Unity fica disponível para os scripts como um Audio Clip. Suporta os
formatos .wav, .mp3, .aif e .ogg, e será utilizado pelo Audio Source para executar o som
(MANUAL, 2012).
O Audio Source é utilizado para reproduzir um som específico no cenário (MANUAL,
2012). Para adicionar um Audio Source, que é um componente, deve-se selecionar este
componente no menu Component, no sub-menu Audio. Suas opções de configuração são
baseadas no Audio Clip, ajustando seu volume, distância da origem do som que será ouvido,
se será tocado em loop, se será escutado apenas quando o jogador passar sobre a zona do
áudio entre outras.
14
O Audio Listener funciona exatamente como um microfone; sem ele não tem como
ouvir um Audio Source. O melhor local para que este componente seja colocado é como
objeto filho da câmera do jogador, pois para onde o jogador estiver olhando, qualquer som
presente no cenário será captado. (MANUAL, 2012).
Também de extrema importância em um jogo é a forma como o usuário controla e
interpreta os game objects. GUI’s são as formas como o usuário interage com o computador
ou programa. Usuários de computador e web estão muito familiarizados com GUI, e, de fato,
a maioria dos usuários estaria perdida sem ela (WATKINS, 2011). Em jogos, as GUI são as
informações que o jogador visualiza durante o jogo, como quantidade de vida, pontuação,
menus.
Para se adicionar uma GUI, pode-se criá-la através do menu game object -> Create
Other e selecionar o tipo de GUI necessária. Outra opção para criar uma GUI, é utilizá-la
como Component de um game object, selecionando a GUI que será usada no menu
Component, no sub-menu Rendering.
As GUIs podem ser usadas como imagens constantes que o jogador terá, como barra
de vida e outras informações necessárias ao longo do jogo, como mostra a ilustração 15.
Ilustração 15 - Exemplos de GUIs.
FONTE: (UNITY, 2012).
A única forma de adicionar botões GUI é através de códigos. Um bom exemplo de uso
de botões é na construção e no uso de menus antes e durante o jogo. Podem ser usados para
iniciar um novo jogo, carregar um jogo já iniciado, para sair do jogo, modificar suas opções,
entre muitas outras funções.
O código para gerar um GUI button é bem simples e pode ser resumido a uma simples
linha: “if (GUI.Button(Rect(10,70,50,30),"Início"))”.
15
A Unity fornece, também, suporte nas linguagens JavaScript, C# e Boo (Python). Para
este trabalho, a linguagem C# foi escolhida por ter a possibilidade de criar melhores
funcionalidades para o desenvolvimento e jogabilidade. Os scripts definem as ações do
personagem, sua interação com o ambiente, com os objetos e com todo o jogo, definindo toda
a jogabilidade, transformando o jogo em um único. No menu da ferramenta, em Assets, é
possível criar scripts das três linguagens fornecidas. Estes scripts, quando finalizados, são
aplicados em objetos, de acordo com sua utilidade. Por exemplo, se for um script de interação
do personagem, quando este colidir com certo objeto, deverão ser adicionados N pontos para
o jogador; o script deverá ser aplicado no objeto do personagem.
Para criar um novo script, basta clicar com o botão direito na aba Project, selecionar a
opção Create, e escolher a linguagem desejada.
Ao criar um novo script, este virá com algumas funções já construídas, que são a Start
e a Update. Todo o código contido na função Start só será executado quando o jogo for
iniciado ou o objeto for instanciado. Por sua vez, a função Update é executada a cada quadro
do jogo, isto é, a função é executada constantemente até que as condições do código não
sejam mais necessárias, ou que objeto ao qual o script esteja acoplado não exista mais.
Um Rigidbody é responsável por simular atributos reais aos game objects, como
massa, gravidade, que podem ser vistos na ilustração 16. A utilização de Rigidbody requer
muito processamento, e seu excesso de aplicação pode causar lentidão em um jogo. O uso de
Rigidbody nem sempre é atribuído a todos os game objects de um jogo, como por exemplo,
num jogo onde o personagem segue por um caminho vendo a área ao seu redor, mas sem
poder acessá-la. Neste caso, não há razão de atribuir um Rigidbody aos objetos que o jogador
não poderá alcançar.
Rigidbodies são componentes; logo para aplicar este componente a um game object,
deve ser localizado primeiramente no menu Components, e, na opção de sub-menu Physics,
selecionar o Rigidbody.
16
Ilustração 16 - Os atributos de Rigidbody.
FONTE: (UNITY, 2012).
A detecção de colisão é a maneira como analisamos nosso mundo 3D para a colisão de
objetos, como estes irão reagir quando um outro objeto colide contra eles. A Unity fornece
diferentes tipo de detecção, sendo um para cada tipo de objeto 3D que ela fornece, como
cubo, cápsula, cilindro, etc. e também fornece o Mesh Collider, que será adaptado para
qualquer forma que tenha o objeto.
Para adicionar o detector de colisão, este deve ser selecionado no menu Component,
através do sub-menu Physics.
Como a Unity não tem suporte para modelagem de objetos 3D, é necessário utilizar
outros softwares, próprios para realizar este tipo de modelagem. Um destes softwares,
bastante recomendado e cada vez crescendo mais no mercado, é o Blender. Existem muitos
livros sobre o Blender no mercado. A Unity possui um suporte muito bom para receber
arquivos feitos no Blender, que quando finalizados, devem ser salvos com a extensão *.blend,
dentro da pasta Assets, localizada na pasta onde se encontra o projeto do jogo. Uma vez que
este arquivo for modificado pelo Blender, contando que o arquivo *.blend esteja corretamente
na pasta Assets, ele será imediatamente modificado na Scene View, da Unity (MANUAL,
2012).
Além de importar objetos de outros softwares, como o Blender, a Unity também
oferece a opção de importar objetos usados em outros projetos feitos também na ferramenta.
Para adicionar objetos de outros projetos, basta alocá-los na pasta Asset do projeto atual
(MANUAL, 2012). Outra forma de adicionar assets de outros projetos é clicar com o botão
17
direito do mouse na aba Project, selecionar a opção Import New Asset, e, na janela que será
aberta, selecionar o projeto e o objeto que deverá ser importado.
3 CONSIDERAÇÕES FINAIS
Através da realização deste trabalho, foi possível perceber que as game engines são
ferramentas muito úteis, pois agilizam e "simplificam" o processo de desenvolvimento de
jogos. Devido à sua complexidade, seu custo de produção é muito elevado, o que faz com que
algumas empresas optem por adquirir apenas uma dentre as licenças de utilização das game
engines disponíveis no mercado. O uso de game engines, no entanto, não substitui o
conhecimento específico nas áreas abordadas por essas ferramentas, pois a ausência deste
conhecimento limita a equipe de desenvolvimento e a qualidade do produto final às
funcionalidades disponíveis na ferramenta escolhida. Há no mercado diversos tipos de
licenças e preços, que variam de acordo com as funcionalidades disponíveis em cada licença.
Dentre as game engines mais acessíveis, está a Unity 3D, que foi escolhida como objeto
principal de observação deste trabalho.
A Unity 3D, por possuir uma interface prática, com funcionalidades simples e
eficazes, além de apresentar baixo custo em relação a outras engines com funções
semelhantes, é uma boa game engine para qualquer nível de experiência de desenvolvedores,
resultando em ganho de tempo de produção e custo/benefício, além de ter uma excelente
compatibilidade com a ferramenta de modelagem Blender, que complementa a Unity em
questões como a geração de modelos 3D, por exemplo.
Como extensões futuras, sugere-se a exploração mais detalhada de cada
funcionalidade da engine Unity3D, o estudo de outras engines, a implementação de um jogo
completo, bem como um maior aprofundamento das potencialidades da ferramenta de
modelagem gráfica Blender, e no estudo de sotfwares similares. Enfim, o presente trabalho
abre rico espaço para experimentação e estudos no excitante campo do desenvolvimento de
jogos eletrônicos.
REFERÊNCIAS
EBERLY, David H. 3D Game Engine Architecture: Engineering Real-Time Applications
with Wild Magic. Elsevier, 2005.
18
GOLDSTONE, Will. Unity Game Development Essentials. Packt Publishin, 2009.
MANUAL, Unity. Learning the interface. Unity Technologies, 2012. Disponível em: <
http://docs.unity3d.com/Documentation/Manual/LearningtheInterface.html >. Acesso em: 28
de novembro de 2012.
PARKER, Matt Stuattrd. Getting Started with Unity. Active Tuts, 2011. Disponível em: <
http://active.tutsplus.com/tutorials/unity/getting-started-with-unity/ >. Acesso em: 28 de
novembro de 2012.
PRIBERAM. Dicionário Priberam da Língua Portuguesa. Disponível em: <
http://www.priberam.pt/DLPO/default.aspx?pal=motor >. Acesso em: 24 de novembro de
2012.
QUINTELLA, Felipe Ferreira. DWeb3D Um Toolkit para Facilitar a Criação de
Manipulação de Cenas 3D usando X3D. Dissertação de Mestrado PUC Rio. Disponível em:
http://www2.dbd.puc-rio.br/pergamum/tesesabertas/0711281_09_pretextual.pdf. Acesso em
maio de 2012.
UNITY, Technologies. Unity 3D. Unity Technologies, 2012. Disponível em: <
http://unity3d.com/unity/licenses >. Acesso em: 28 de novembro de 2012.
WATKINS, Adam. Creating Games with Unity and Maya: How to Develop Fun and
Marketable 3D Games. 2011.
Download

FACULDADE METODISTA GRANBERY - FMG