Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

GAME ENGINEGAME ENGINE
INTRODUÇÃO AOINTRODUÇÃO AO
DESENVOLVIMENTO DEDESENVOLVIMENTO DE
GAMES COM UNITY3DGAMES COM UNITY3D
Autor: Me. George Santiago
Revisor : I van Dimitry R . Zyr ianof f
IN IC IAR
introdução
Introdução
Os motores de jogos ou game engines são sistemas que fornecem ferramentas
para auxiliar no processo de desenvolvimento de jogos, podendo serem
utilizados por equipes independentes ou até mesmo grandes empresas. Em
resumo, essas ferramentas oferecem diversas funcionalidades para as
diversas etapas na criação de um jogo. O Unity Editor é considerado um dos
melhores game engines da atualidade, seja pela sua interface intuitiva, vasta
documentação, loja de ativos ou versão gratuita. Permite a criação de jogos
bidimensionais, tridimensionais ou híbridos (2.5D), além de ofertar inúmeras
funcionalidades para a criação de ambientes em realidade virtual e
aumentada. Neste capítulo, abordaremos os componentes básicos contidos
no Unity que ajudaram a criar os nossos protótipos, bem como a sua loja de
Assets . Discutiremos o papel das animações e recursos audiovisuais, além da
sua in�uência na progressão do jogo. Iremos abordar os conceitos iniciais da
criação de um protótipo, bem como os desa�os propostos ao jogador, além
de conhecer as estruturas-base de criação desses projetos. Como parte �nal
dos estudos desta unidade, você terá oportunidade de assistir uma aula na
prática de como desenvolver a estrutura básica de um jogo. A prática
permitirá explorar os conceitos expostos ao longo da unidade.
O Unity é um sistema para o desenvolvimento de jogos e aplicativos com
interação bidimensional, tridimensional e até 2.5D.
O Unity permite que o usuário opere não apenas utilizando código, mas
também com componentes visuais. Possibilita adicionar diversos assets
especí�cos de acordo com o projeto de maneira intuitiva na sua interface .
Para instalar o Unity Editor , utilizaremos o Hub . O Hub é uma ferramenta para
gerenciamento de projetos e controle de versões do Unity . Permite gerenciar
várias instalações do Unity (com versões diferentes), juntamente com os
componentes do projeto. Para instalar o Unity Hub para o Windows , Mac OS
e Linux visite a página o�cial do Unity .
Para realizar a instalação do Unity Editor , você deve criar uma conta na Unity
Developer Network (UDN). Após realizar o cadastro, entre com o login e a
senha na aplicação Hub e, escolha a licença Personal , versão gratuita do Unity
para usuários e empresas com receita bruta anual inferior a 100 mil dólares.
Prossiga para a instalação do Unity Editor . Para realizar o cadastro de novo
usuário, acesse o site do Unity .
Introdução à Game EngineIntrodução à Game Engine
UnityUnity
Após realizar a instalação do Hub e do Unity Editor em seu sistema, você vai se
deparar com a tela do Unity Hub (Figura 1.1). Vejamos a descrição dos
principais componentes na tela:
1. Projects: essa aba é responsável por gerenciar os diversos projetos do
usuário.
2. Learn: aba com diversos projetos e tutoriais em diferentes níveis de
aprendizado (iniciante, intermediário e avançado) para o usuário familiarizar-
se com a plataforma.
3. Installs: aqui é possível instalar, desinstalar e adicionar módulos à versão
atual do Unity , sendo os principais: Android, IOS, Linux, Mac e Windows build
support.
4. ADD: o Unity Hub possibilita que o usuário trabalhe com diversas versões
do Unity Editor ; aqui, você pode adicionar versões com lançamento o�cial
mais recente e as versões alpha (em pré-lançamento).
5. NEW: criação de um novo projeto.
Dominar um software leva tempo, é preciso de prática e aprofundamento para
conhecer as suas principais funcionalidades, além de um estudo com outros
Figura 1.1 - Unity Hub
Fonte: Elaborada pelo autor
softwares de desenvolvimento para: comparar, testar e analisar qual atende
as suas necessidades como desenvolvedor. O Unity tem uma comunidade
bem ativa, com diversos tutoriais desenvolvidos pela empresa e pelos
próprios usuários. No site do Unity você encontra tutoriais dos mais diversos
projetos, com níveis de di�culdades para iniciantes, intermediários e
avançados, bem como tópicos sobre as melhores práticas de programação,
interface, otimização de performance , física etc. O Unity tem uma
documentação vasta que pode ser acessada pelo site principal da engine .
Lembre-se de que o Unity recebe atualizações constantes, desde a melhoria
de performance até mudanças na sua interface. Algumas vezes, códigos ou
ferramentas tornam-se obsoletos nas atualizações do Unity .
Criando o Projeto
Vamos começar um novo projeto?
1. Abra o Unity Hub, faça login com sua conta Unity .
2. Clique no botão new no canto superior direito, digite o nome do projeto -
vamos chamá-lo de "3D Project".
3. De�na a versão do Unity - versão utilizada no tutorial “2019.3.0a4”.
4. Escolha a pasta onde deseja salvar seu projeto.
5. Veri�que se o template está de�nido para 3D.
6. Clique em create para iniciar o projeto. Veja as con�gurações salvas, na
Figura 1.2:
Interface do Unity Editor
Após a criação do projeto, você vai se deparar com a interface do Unity editor
(Figura 1.3). Os principais componentes da interface são: Inspector window,
Hierarchy window, Project window, Toolbar e Scene view. Nas próximas
subseções será descrito cada um desses componentes.
Project Window
Figura 1.2 - Create a new Project
Fonte: Elaborada pelo autor
Figura 1.3 - Interface do Unity
Fonte: Elaborada pelo autor
Esses diretórios incluem todos os recursos usados no seu projeto, como as
imagens, modelos 3D, sons, scripts e outros arquivos. Esses arquivos são
conhecidos como assets . O painel esquerdo do Project window mostra a
estrutura de pastas como uma lista hierárquica. Quando uma pasta é
selecionada, o seu conteúdo será mostrado no painel à direita. Os assets
individuais no painel direito são mostrados como ícones que indicam o seu
tipo (subpasta, material, textura, script etc).
Hierarchy Window
A janela Hierarquia contém uma lista de objetos presentes na cena atual, por
exemplo, os personagens, cenários, áudio, scripts, dentre outros. No Unity , os
jogos são compostos de cenas. Cada cena pode representar um nível ou um
ambiente diferente no seu jogo. Os objetos dentro da aba Hierarchy são
chamados de GameObjects.
Scene View e Game Window
A janela de visualização exibe todos os elementos da cena atual, ou seja,
todos os GameObjects, da Hierarchy window. Você usará essa aba para
selecionar e posicionar os elementos na cena atual, por exemplo, os
personagens, luzes, câmeras e todos os objetos do cenário. O Unity possui um
conjunto de controles para auxiliar na manipulação e navegação de cenas. O
Scene Gizmo é uma ferramenta localizada no canto superior direito da Scene
view . Isso permite modi�car o ângulo de visão e o modo de projeção da cena.
O Scene Gizmo contém um braço em forma de cone para cada lado do cubo.
Os cones são rotulados X, Y e Z. Ao clicar em qualquer cone do eixo pode-se
rotacionar a câmera. Clicando no botão direito do mouse em cima do Scene
Gizmo e, respectivamente em Free, o ângulo de visão retorna aos valores-
padrão. O Game window ou janela do jogo, é uma aba oculta, localizada ao
lado do Scene view . Enquanto a janela de visualização permite manipular os
GameObjects em cena, a janela de jogo exibe o que o jogador verá quando
jogar o jogo. Lembre-se: essa exibição é determinada pelo que a câmera da
sua cena está exibindo.
Inspector Window
Ao selecionar um GameObject em uma janela, o inspector window exibe
informações detalhadas sobre esse objeto, incluindo todos os componentes e
propriedades relacionados ao GameObject . Pelo inspector é possível visualizar
e editar as propriedades dos componentes vinculados ao objeto, além de
adicionar novos componentes ao objeto selecionado. Isso inclui componentes
de física, áudio, scripts , iluminação, dentre outros. Todos os GameObjects no
Unity começam com um componente Transform, que especi�ca a posição e
rotação do objeto em cena. Os outros componentes são opcionais e você
pode adicionar conforme as necessidades do projeto.
ToolBar
A barra de ferramentas consiste em controles relacionados a diferentes
partes do Unity editor. Esses controles são úteis para ajudá-lo a mover,
manipular e testar o seu jogo. Dentre os principais controles no toolbar,
temos os play buttons ( play , pause e step ), responsáveis por testar a cena
atual carregada na Hierarchy window . O play permite visualizar o jogo em
tempo real, pause é responsável por pausar a janela do jogo para identi�car
possíveis problemas visuais. O step é utilizado para percorrer a cena pausado,
frame a frame, além de visualizar o comportamento de determinado
GameObject em cena, uma vez que, em diversas situações é difícil visualizar as
modi�cações dos objetos em tempo real. Além dos controles de reprodução,
temos os manipuladores de objetos, esses controladores movem e
manipulam os GameObjetcs na janela Scene.
Layouts
Você pode ir personalizando sua área de trabalho de várias maneiras, é
possível arrastar as janelas nas subseções anteriores para vários locais da
interface do Unity . As janelas também podem ser desanexadas e organizadas
em suas próprias janelas �utuantes. Por padrão o Unity disponibiliza os
seguintes layouts : 2 by 3, 4 Split, Tall, Wide e Default. Para alternar entre
layouts, selecione no menu a opção Windows> Layouts. O layout 4 Split é
recomendado para a visualização de modelos 3D em diferentes ângulos. O
Tall con�gura as janelas Scene e Game para uma melhor visualização, além de
�xar as janelas Inspector, Project e Hierarchy nas colunas à direita. O layout
Wide �xa as janelas Hierarchy, Project e Inspector para a parte inferior do
Unity editor. Por �m, temos o Default, que centraliza a exibição das janelas
scene e game , os outros componentes são �xados em ambos os lados, além
da parte inferior. O layout do Unity Editor depende da preferência pessoal do
usuário.
Criando e Usando Scripts
Os scripts no Unity são utilizados para controlar o comportamento dos objetos
ligados a eles, sem scripts , os objetos não teriam nenhum comportamento. O
Unity permite que você crie seus próprios scripts para modi�car as
propriedades de componentes vinculados ao objeto, ative determinados
eventos durante o jogo, responda aos comandos de entrada do usuário,
dentre outros. Nativamente o Unity suporta a linguagem de programação C#,
linguagem semelhante ao java e C++.
Os scripts são criados diretamente na interface do Unity. Você pode criar um
novo script indo na janela Project> Assets> Create> C# script, ou você pode
selecionar um GameObject na janela Hierarchy> Inspector> Add component>
digitar new script> de�nir um nome para o script> Create and Add. Caso o
usuário não tenha criado o script em um diretório especí�co, por padrão o
script será criado na pasta Assets . Após clicar duas vezes em um script no Unity
Editor , o mesmo será aberto em um editor de texto, por padrão, o Unity
utiliza o Visual Studio. A estrutura básica de um script pode ser vista na Figura
1.4:
É no script que trabalhamos com a programação do jogo, sendo responsável
por inúmeras funções na jogabilidade, por exemplo, quando o usuário aperta
um determinado botão, ele irá executar a ação correspondente. Além disso,
podemos via script controlar quando uma animação de personagem será
ativada ou controlar a pontuação do jogo. A programação é responsável por
dar vida a quase todos os elementos do jogo. A seguir, serão descritos os
componentes da estrutura de script da Figura 1.4.
As linhas 1 a 3 mostram as bibliotecas utilizadas no projeto, a linha 3
( UnityEngine ) adiciona a biblioteca do Unity para a linguagem C#
reconhecer todos os comandos do motor do jogo;
A linha 5 contém o nome do script “Test”, indica que ele é uma classe
que herda características em comum com MonoBehaviour . O
MonoBehaviour é a classe base da qual derivam os scripts do Unity . O
nosso script herda as características em comuns do MonoBehaviour ,
que nada mais é do que outro script que já tem seus métodos
de�nidos. Na programação é comum usar algo chamado orientação a
objetos, na qual o mesmo herda características em comum de um
elemento e reunimos em um único script chamando de classe pai.
Outros scripts vão herdar as características dessa classe, facilitando
assim o desenvolvimento de diversas funções dentro do jogo
(posteriormente discutiremos sobre esse tópico);
Figura 1.4 - Script base no Unity
Fonte: Elaborada pelo autor
A linha 8 chama o método Start que é executado uma única vez
dentro do tempo de vida útil do script;
A linha 13 chama o método Update a cada frame renderizado do
jogo, a função depende da taxa de quadros. A taxa de quadros pode
variar mais do que uma vez por segundo, pois o intervalo de tempo
para chamar o Update não é �xo, isso depende de quanto tempo é
necessário para concluir o frame individualmente. Por exemplo, a
capacidade de processamento pode alterar o tempo de renderização
de frames, ou quando determinada Scene tenha uma quantidade
expressiva de objetos a serem renderizados, como objetos com
muitos polígonos.
Ainda, existem outros métodos que são herdados do MonoBehaviour como o
FixedUpdate, LateUpdate, OnGUI, OnDisable e OnEnable que iremos discutir
mais à frente. Inicialmente, focaremos as duas funções de�nidas por padrão
no script, start e update. Dentro da função Update , iremos colocar os códigos
que manipularam a atualização dos frames para o GameObject, isso inclui
movimento, resposta a determinadas ações de entrada do usuário e
praticamente qualquer coisa que precise ser tratada ao longo do tempo
durante o jogo. A função Start será chamada antes do jogo começar, antes
mesmo da função Update , é o local ideal para inicializar as propriedades de
uma variável.
Para demonstrar o funcionamento do Start e Update, iremos inicialmente
adicionar o seguinte código na função Start:
void Start()
{
Debug.Log("Start
Test");
}
O Debug.Log é um comando que imprime uma mensagem na saída do
console do Unity. A janela de console é responsável por mostrar os avisos e
erros que o jogo está produzindo. O console fornece informações úteis
durante o desenvolvimento dos jogos, sendo possível identi�car erros ao
longo do projeto. Por padrão, a janela console �ca ao lado da janela de
projeto. Mas, você pode ativar no menu do Unity> Window> General>
Console. Agora, salve o script (ctrl+s) para podermos testar o script. Voltando
ao Unity Editor, clique em Play, localizado no menu superior do Toolbox.
Aparentemente, não obtivemos nenhum comportamento diferente na tela do
Unity , mas, na parte inferior do Unity e na janela do console podemos
visualizar a mensagem exibida pelo nosso código (Figura 1.5).
Perceba que a mensagem foi enviada uma única vez, pois a função Start é
executada uma única vez. Após o teste inicial, voltamos ao Visual Studio.
Faremos o teste na função Update, retire o código “Debug.Log("Start Test")”
da função Start e coloque na função Update, observe como �cou:
void Update ()
{
Debug.Log("Start
Test");
Figura 1.5 - Debug.Log
Fonte: Elaborada pelo autor.
}
Agora, salve o script (ctrl+s) para podermos testá-lo. Voltando ao Unity Editor,
clique em Play. Observe que o código é chamado a cada frame, pois o Update
é chamado a cada frame renderizado do jogo.
saiba mais
Saiba mais
O Unity é um motor de jogo que disponibiliza
diversas funcionalidades para a criação de
jogos. A engine possui uma interface
intuitiva, documentação extensa disponível
no site da empresa, fórum de discussões
dedicado à plataforma, versão gratuita,
milhares de assentes prontos para a
implementação em um projeto, além da
possibilidade de criar jogos em 2D e 3D. Veja
o vídeo de alguns jogos 2D desenvolvidos
utilizando o Unity:
ACESSAR
Posteriormente, falaremos sobre a ordem de execução para funções no Unity
, o mesmo possui uma ordem predeterminada.https://www.youtube.com/watch?v=NMUr2yNALhU
atividade
Atividade
Leia o excerto a seguir:
“ Unity 3D possui uma interface simples que facilita a manipulação e a organização
dos arquivos e componentes do jogo. A área de trabalho é formada por várias
janelas, cada uma com uma �nalidade especí�ca, que podem ser organizadas de
acordo com a preferência do usuário”.
TEOTÔNIO, W.; ARAÚJO, A. Desenvolvimento de Jogos para Dispositivos Móveis
utilizando o Motor de Jogo Unity 3D: um Estudo de Caso. 2017. Disponível em:
https://bit.ly/2SpzHV9 . Acesso em: 9 jan. 2020.
Com base no texto, analise as seguintes a�rmações:
I. O inspector é responsável por exibir as con�gurações de um GameObject, bem
como os seus componentes.
II. O Unity possui um conjunto de controles para auxiliar na manipulação e
navegação de cenas.
III. Os Scripts são componentes pré-compilados para controlar o comportamento de
um objeto dentro do jogo. O unity não permite criar os seus próprios scripts.
IV. O Scene Gizmo é uma ferramenta localizada no canto inferior direito da Scene
Game.
Está correto o que se a�rma em:
a) I, II e III, apenas.
b) I e II, apenas.
c) II, III e IV, apenas.
d) I, III e IV, apenas.
e) I, II, III e IV.
https://www.researchgate.net/publication/320273327_Desenvolvimento_de_Jogos_para_Dispositivos_Moveis_utilizando_o_Motor_de_Jogo_Unity_3D_um_Estudo_de_Caso
O Unity tem uma loja de ativos própria, chamada Unity Store , contendo
milhares de Assets . Mas o que são Assets ? No Unity , um recurso é um objeto
que o usuário pode usar em seu projeto. Esses objetos podem vir de um
arquivo criado fora do Unity , como um arquivo de áudio, uma imagem, um
modelo 3D, scripts ou qualquer outro tipo de objeto compatível com Unity .
Além dos recursos criados dentro do Unity , como um Render texture ou um
Animator Controller . A loja de ativos oferece milhares de recursos gratuitos ou
de baixo custo, são recursos adicionais utilizados para o seu jogo. A Asset store
é organizada de acordo com os diferentes tipos de ativos disponíveis, sendo
os principais: Recursos 3D, Recursos 2D, Adds-ons (funções que você pode
importar para o projeto, sendo as mais populares, Unity Ads , Analytics e IAP -
compras no aplicativo), Áudio, Templates, Ferramentas e VFX.
Navegar na Unity Asset Store
Você pode acessar o Unity store através da Game Engine ou do site da Asset
Store .
Comandos de Entrada eComandos de Entrada e
AssetsAssets
Para acessar pela Interface do Unity , abra seu projeto no Unity e no menu
superior vá para Window> Asset Store. Isso irá abrir uma nova janela na
interface do editor, ao lado das janelas scene , game e console. Veja a asset
store aberta no editor do Unity (Figura 1.6).
Figura 1.6 - Interface do Unity
Fonte: Elaborada pelo autor
Percorra a página da asset store para encontrar diversos recursos, em seções
organizadas descritas anteriormente. No lado esquerdo da página existem
diferentes categorias, clicando em uma delas é possível ver apenas os
recursos dessa seção. Na parte superior da página é possível pesquisar
utilizando a barra de pesquisa. Vamos fazer o download de um recurso na loja
de ativos? Abra a loja de ativos pelo editor do Unity . No painel direito em All
Categories marque o �ltro 3D> environments> Sci-Fi (Figura 1.7).
Precisamos localizar um ativo gratuito, na aba superior direita é possível �ltrar
o resultado pelo preço dos itens. No menu superior da loja de ativos, vá em
Sort by Price e selecione a opção Low to High . Usaremos o pacote Snaps
Prototype | Sci-Fi / Industrial. Esse pacote é oferecido gratuitamente pela
Unity . Após localizar o ativo lembre-se que é possível pesquisar o nome do
recurso na barra de pesquisa, de um duplo clique e faça download do arquivo
(Figura 1.8).
Figura 1.8 - Asset store: Snaps Prototype
Fonte: Elaborada pelo autor
1.7 - Asset store
Fonte: Elaborada pelo autor
Depois de fazer o download de um recurso na Asset Store através de Unity
Engine , o botão Download mudará para um botão Import . Clique nesse botão
para importar o recurso para o seu projeto Unity aberto. Após importar o
arquivo uma lista de veri�cação solicita permissão para importar os recursos
para o seu projeto. Clique no botão Import (Figura 1.9) e veja os recursos em
sua pasta.
Figura 1.9 - Asset store: Snaps Prototype
Fonte: Elaborada pelo autor
Após importar o arquivo para dentro do projeto, iremos abrir uma cena de
amostra contida no pacote. Para isso, vá à janela Project> pasta Assets>
AssetStoreOriginals> _SNAPS_PrototypingAssets> SciFi_Industrial>
  SampleScenes. No painel direito, dê um duplo clique no arquivo
SciFi_Industrial_SampleLayout (Figura 1.10).
Figura 1.10 – Asset store: Snaps Prototype
Fonte: Elaborada pelo autor
Já é possível visualizar os objetos do recurso importando na janela Scene ,
Game e Hierarchy . Clique em Play e veja a cena na janela Game. Dentro do
Unity Store existem diversas categorias que você pode explorar, procurar
recursos visuais para os mais diversos projetos. Na aba 3D temos: animations ,
characters , environments , props , vegetation e vehicles . No 2D: characters ,
environments , fonts , GUI , textures e materials . Você pode utilizar diversos
recursos na asset store livremente nos seus jogos, a loja da Unity contém
inúmeros recursos, para os mais diversos projetos.
saiba mais
Saiba mais
O Unity disponibiliza gratuitamente um 2D
Game Kit, contendo uma coleção de
ferramentas, mecânicas, sistemas e ativos
para que o usuário compreenda como esses
elementos podem ser utilizados dentro de
um jogo "pronto".
ACESSAR
https://assetstore.unity.com/packages/essentials/tutorial-projects/2d-game-kit-107098
De maneira geral, é necessário um entendimento sólido dos fundamentos de
programação para programar jogos digitais no unity . As estruturas
fundamentais de dados são similares para qualquer outro tipo de software ou
programa. O unity utiliza nativamente o C#, mas, mesmo com o entendimento
dessa linguagem de programação, o usuário ainda precisa aprender as
estruturas básicas ao programar no unity , pois algumas estruturas são
diferentes. O primeiro passo é compreender a estrutura do script , visto de
forma introdutória no tópico 1 desta unidade. O script é um roteiro, que dirá
qual comportamento um GameObject terá. A estrutura básica de um script é
composta de classes, funções e variáveis. As variáveis começam com a letra
minúscula e mantêm valores como parâmetros a outros objetos.  As funções
começam com uma letra maiúscula e são estruturas utilizadas para organizar
códigos para reutilização em diferentes partes do jogo. As funções são rotinas
para processar uma sequência de passos, podendo ou não retornar um
objeto. Uma classe é um agrupamento de variáveis e funções para criar uma
referência ou modelo que de�na os atributos (propriedades) de um objeto.
 Os vários tipos de variáveis (int, �oat, bool, string etc.) podem ser públicas (
public ) ou privadas ( private ), posteriormente discutiremos sobre outros
Programação na GameProgramação na Game
EngineEngine
modi�cadores ( protected , abstract e internal ). O public permite que o seu
valor seja acessado por qualquer outro script, podendo ser referenciados por
outras classes. Já o private, de maneira geral, são atributos que o usuário não
deseja que seja alterado por outros scripts. As variáveis devem ser privadas e
os métodos públicos.
O acesso às variáveis deve ser feito por meio de métodos setters and getters .
Especi�camente na Unity , os campos públicos são visualizados no Inspector,
enquanto variáveis privadas não. Ou seja, é possível editar valores de
atributos públicos no inspector. No entanto, é possível que um campo privado
seja visível ou um campo público seja oculto no inspector. Para esse
propósito, temos [SerializeField] e [HideInInspector]. O [SerializeField] é
adicionado antes de um campo privado para torná-lo visível no inspector. Já o
[HideInInspector] é utilizado antes de um campopúblico para ocultá-lo no
inspector.
Anteriormente, utilizamos o Debug.log para estudar os métodos Update e
Start . Nas próximas subseções serão descritos outros métodos importantes
do MonoBehaviour, que é a classe principal do Unity.
Input
A classe é responsável pelo sistema de Inputs no jogo, contendo vários
métodos para detectar essas entradas. O Unity suporta Input de teclado,
joystick e gamepad. Além de multi-touch/accelerometer de dispositivos
mobile. O unity utiliza botões padrões, para visualizar ou adicionar novos é
preciso ir ao menu principal do Unity Editor> Edit > Project Settings > Input.
Os eixos "Horizontal" e "Vertical" são mapeados pelas teclas A, W e S ou as
teclas de seta. O "Fire1", "Fire2" "Fire3" são mapeados por left ctrl, left alt e left
shift ou pelo Mouse0 (botão esquerdo do mouse), Mouse1 (botão
secundário/direito do mouse) e Mouse2 (botão do meio do mouse).
GetButtonDown: ativada uma única vez após um botão ser
pressionado.
Exemplo:
if (Input.GetButtonDown ("Fire1")) {   // detecta o Input do botão esquerdo do
mouse ou a tecla ctrl
Debug.Log("Botao Atirar foi Pressionado");   // imprime a mensagem   no console
após usuário pressionar a tecla ctrl ou botão esquerdo do mouse
}
GetButtonUp: ativa após o botão deixar de ser pressionado.
Exemplo:
if (Input.GetButtonUp ("Fire1")) {  // detecta o Input do botão esquerdo do mouse
ou a tecla ctrl
Debug.Log("Botao Atirar deixou de ser Pressionado");  // imprime a mensagem no
console após usuário pressionar a tecla ctrl ou botão esquerdo do mouse
}
GetKeyDown: ativada uma única vez após um botão especí�co ser
pressionado.
Exemplo:
if (Input.GetKeyDown ("q")) {  // detecta o Input do botão Q
Debug.Log("Botao Q foi Pressionado");  // imprime a mensagem  no console após
usuário pressionar a tecla Q do teclado.
}
GetKey: ativada continuamente enquanto a tecla for pressionada.
Exemplo:
if (Input.GetKey ("q")) {  // detecta o Input do botão Q
Debug.Log("Botão Q está sendo pressionado");   // imprime a mensagem   no
console após usuário pressionar a tecla Q do teclado.
}
Input do Mouse: similar ao mapeamento de teclas do teclado, o
GetMouseButton é responsável pelo input do botão esquerdo (0),
direito (1) e botão do meio (2) do mouse, o GetMouseButtonDown é
ativado continuamente e o GetMouseButtonUp é ativado quando
usuário deixar de pressioná-lo.
Exemplo:
if (Input.GetMouseButton (0)) {
Debug.Log(" Foi pressionado o botão esquerdo do mouse");
}
if (Input.GetMouseButtonUp (1)) {
Debug.Log("Está  pressionado o botão direito do mouse");
}
if (Input.GetMouseButtonDown (0)) {
Debug.Log("Deixou de  pressionar o botão do meio do mouse");
}
Invoke
O método invoke permite o agendamento de um método para ser invocado
posteriormente. Ou seja, é responsável por invocar uma função dentro de um
tempo especí�co (x).   Exemplo, após o jogo ser iniciado, quero que após 3
segundos a mensagem “Test” seja exibida no console. Veja o código abaixo
com os seus respectivos comentários, o que estiver à frente do // (barra-
barra) é ignorado pelo compilador.
void Start( )
{
Invoke("MessageTest", 3f); //  após 3 segundos o método invoke chamará a função
MessageTest( ) .
}
void MessageTest( ) Função responsável por imprimir a mensagem no console do
Unity.
{
Debug.Log("Test");
}
}
Além do Invoke, temos o InvokeRepeating e o CancelInvoke. O
InvokeRepeating é responsável por chamar uma função mais de uma vez em
um tempo �xo. O CancelInvoke cancela todas as chamadas invocadas ou
repetidas no script. Vejamos o código abaixo como exemplo.
void Start( )
{
InvokeRepeating("MessageTest", 3f , 2f); //   após 3 segundos o método
InvokeRepeating chamará a função MessageTest( ), após a chamada inicial de 3
segundos, a função MessageTest( ) será invocada a cada 2 segundos.  Ou seja, X
segundos a cada Y segundos.
}
void Update () {
if (Input.anyKey) {   // Detecta se alguma tecla ou mouse foi pressionada, se o
retorno foi positivo, cancela todas as chamadas invocadas.
CancelInvoke();
}
}
void MessageTest( ) Função responsável por imprimir a mensagem no console do
Unity.
{
Debug.Log("Test");
}
}
Instantiate
Essa função  é usada para instanciar um objeto, na posição (Vector3 (X,Y,Z)) e
na rotação (Vector3(X,Y,Z)) que é informado. A função faz uma cópia (clone) de
um GameObject,   todas as propriedades são mantidas do objeto original.
Como exemplo temos o projétil  de uma arma, onde para cada disparo uma
bala é instanciada, na mesma posição e rotação da arma. Veja abaixo a
declaração do método Instantiante e sua respectiva descrição dos
parâmetros.
Instantiate(GameObject); // responsável por instanciar o clone de um objeto.
Instantiate(GameObject, Transform parent); // responsável por instanciar o clone
de um objeto na posição original do objeto pai (onde estará o script).
Instantiate(GameObject original, Vector3 position, Quaternion rotation); //
responsavel por instanciar o clone de um objeto , de�nir a posição e orientação
para o novo objeto.
Destroy
O Destroy é o contrário do Instantiate, é um método para remover   um
GameObject/componente ativo. Ou seja, após ser chamado, o objeto será
destruído. É possível atribuir um parâmetro para que objeto seja eliminado
após x segundos. Veja o código abaixo com métodos utilizados pelo Destroy.
void DestroyGameObject() {
Destroy(gameObject); // o objeto é destruído imediatamente.
}
void DestroyScriptInstance() {
Destroy(this); // destrói a instância atual, "this" refere-se ao próprio script. Ou seja,
destruirá o script que chama essa função.
}
void DestroyComponent() {
Destroy(GetComponent<Rigidbody>());  // Remove o rigidbody  do GameObject
}
void DestroyObjectDelayed() {
Destroy(gameObject, 3f); // Após 3 segundos  o GameObject é eliminado.
}
FixedUpdate e LateUpdate
O FixedUpdate é uma função que exerce papel similar ao Update, executando
constantemente. A diferença é que ele não depende do número de frames
por segundos, usando um intervalo de tempo �xo. É uma função
recomendada para cálculos de física, que discutiremos posteriormente.
Similar ao Update, o LateUpdate é atualizada a cada Frame por segundo, após
o Update ser chamado. A ordem de execução das funções Update são
FixedUpdate > Update > LateUpdate.
saiba mais
Saiba mais
O Unity disponibiliza gratuitamente um 2D
Game Kit , contendo uma coleção de
ferramentas, mecânicas, sistemas e ativos
para que o usuário compreenda como esses
elementos podem ser utilizados dentro de
um jogo pronto.
ACESSAR
https://assetstore.unity.com/packages/essentials/tutorial-projects/2d-game-kit-107098
O Unity contém diversos recursos de animação, seja para jogos 2d ou 3d,
sendo possível animar diferentes partes do corpo de um objeto (um
personagem por exemplo),   gerenciamento visual das interações entre as
partes de um objeto, �uxo de trabalho intuitivo e simpli�cado, suporte para
clipes, vídeos e animações prontas importadas de outros softwares , dentre
outros.
A Animation window (você pode habilitar essa janela indo no menu do
Window > Animation > Animation) é responsável por animar os GameObjects
usando a técnica tradicional de animação quadro a quadro. Os chamados
quadro-chaves são marcações realizadas pelo usuário em um linha de tempo,
essa linha contém os dados do GameObject de acordo com o loop da
animação. Esses pontos indicam as alterações que o GameObject precisa
realizar para modi�car a sua estrutura, logo, produzir uma animação. A
engine interpreta esses pontos, interpola as informações do quadro-chave
para o próximo ponto reproduzir a animação de acordo com os parâmetros
da linha do tempo.
AnimaçãoAnimação
Vamos analisar o comportamento de uma animação no Unity? Para isso, você
deve habilitar a janela Animation window,   acessar a asset store e importar
para o Unity o ativo "Animated 2D Coins", produzido por Allsstar. Após
importar o recurso, crie uma nova scene (janela Project > " + " > Scene). Na
janela Project> Asset > Animated 2D Coins > Sprite Sheet. Dentro da pasta
Sprite Sheet, expanda o ativo EUR_6x4 e arraste a primeira fatia EUR_6x4_0
para a janela hierarchy (Figura 1.11).
Arrastando as fatias para a janela de hierarchy , o Unity cria automaticamente
uma nova animação, você precisa criar ou escolher uma pasta para pôr esses
arquivos, sugerimos criar uma pasta para animações, e dentro dela uma
pasta para cada objeto animado em cena (personagem, inimigos, HUD etc.).
Vamos criar a nossa animação? Na janela Animation, clique em Create e
de�na o nome para Coins. E agora? Volte à janela Project > Sprite Sheet e
arraste todas as fatias do ativo EUR_6x4 para a janela Animation (Figura 1.12).
Figura 1.11 - Animação
Fonte: Elaborada pelo autor
A linha branca na linha do tempo na janela de animação é chamada de
reprodução, indica os pontos-chaves presentes na animação. Para movê-lo,
clique com o botão esquerdo e arraste ao longo da linha de animação. Você
vai perceber que ao mover a linha branca, a moeda vai rotacionar. Basta
observar na janela Scene. É possível adicionar novos pontos-chaves e alterar a
velocidade de rotação. Para adicionar um novo ponto-chave e gravar é preciso
habilitar o Keyframing, um botão na janela Animation, ao lado da opção
"preview", quando habilitado, qualquer alteração na animação será aplicada
ao GameObject. O Keyframing realiza uma gravação dos novos parâmetros
em cena, seja adicionar um quadro-chave, alterar a velocidade de movimento,
a cor, a posição, dentre outras con�gurações.
Figura 1.12 - Animação
Fonte: Elaborada pelo autor
Quando arrastamos as fatias da moeda para a janela de animação,
automaticamente, o Unity interpola as informações de um quadro-chave para
outro. Quando o usuário movimenta a linha branca, está alternando entre um
quadro-chave para outro. Mas essa é uma con�guração padrão, cada
animação exige parâmetros próprios, de acordo com a cena e o tipo de
movimento que o desenvolvedor espera da animação. Como exemplo, vamos
imaginar a criação de uma animação de corrida, o usuário dá input para o
personagem sair da inércia e começar a correr, logo, exige três quadros-chave
para a posição da animação. O primeiro quadro-chave representa   o
personagem inerte, sem movimentação de andar, correr ou pular. O segundo
representa  o personagem em sua velocidade máxima de corrida, por �m, o
terceiro é o personagem em seu estado padrão.
Esses pontos-chaves são responsáveis pelas alterações de estágios da
animação. Automaticamente, o Unity interpola esses pontos, em um intervalo
de tempo �xo. Da maneira que descrevemos o objeto apenas vai de um ponto
a outro, sem alterações suaves. Lembra-se que o ponto-chave do meio é
responsável pela velocidade máxima de movimento? O personagem precisa
de um progressão para chegar a essa velocidade máxima, além da
desaceleração para voltar à inércia. Para realizar essas alterações, o Unity
disponibiliza as modi�cações de animações usando curvas. Na parte inferior
da janela Animation, clique em Curves (Figura 1.13).
reflita
Re�ita
Levando em consideração os assuntos abordados ao longo da
unidade sobre o Unity, re�ita como uma Game Engine pode
in�uenciar no desenvolvimento de um jogo eletrônico.
De forma automática, o Unity criará as propriedades básicas (Position.x,
Position.y e Position.z) do objeto. Expanda a opção Position e veja a curva
atual da animação de moeda. Selecionando o quadro-chave é possível alterar
a curva da animação, o efeito é usado para modi�car a trajetória da animação
do GameObject. Por exemplo, é possível acelerar o movimento de rotação da
moeda em determinado quadro-chave. Observe a Figura 1.14, na janela de
animação, existem três linhas: vermelha, verde e azul. A linha vermelha é
responsável pelo eixo horizontal (Position.x), alterando esse valor, a moeda
vai rotacionar ao mesmo tempo que se movimenta pelo eixo horizontal. A
linha verde representa as alterações do eixo vertical (Position.Y), o que
signi�ca? Por exemplo, permite que a moeda suba e desça, podendo, criar
uma animação de pulo. Alterando os valores da linha verde é possível
perceber que em determinado ponto a moeda vai desaparecer. O eixo z é
responsável pela profundidade, ao mover a linha, a moeda ultrapassa os
limites da câmera. Posteriormente, estudaremos projeção ortográ�ca e
perspectiva da câmera 2d e 3d. Esses valores (x, y e z) localizam o objeto no
espaço tridimensional. Como exercício simples, altere as curvas e de
animação e veja como o comportamento de movimentação da moeda.
Figura 1.13 - Curves
Fonte: Elaborada pelo autor
Animator Controller
O Animator Controller é uma ferramenta para organizar as transições das
animações associadas a um objeto. Por exemplo, qual a transição da
animação da moeda? Aparentemente nenhuma, mas, antes de analisar essa
a�rmação, vamos abrir o animator?   No Unity , acesse o menu Window >
Animation > Animator. Observe a Figura 1.15.
Figura 1.14 – Curves
Fonte: Elaborada pelo autor
Figura 1.15 – Curves
Fonte: Elaborada pelo autor
A estrutura do Animator Controller permite organizar um conjunto de
animações e suas respectivas transições associadas a um objeto.   O
funcionamento do controlador é baseado em uma máquina de estado, que de
maneira simples, pode ser conceituado como um diagrama. Observe que a
ideia básica de uma máquina de estados é projetar uma estrutura de controle
sobre as ações de um objeto. Tais ações dependem de uma série de fatores,
que vai desde a jogabilidade, mecânica ou as regras que de�nem o
comportamento dos elementos do jogo. Essas ações são chamadas de
estados, por exemplo, o objeto, ou melhor, um personagem, está em um
"estado" de inércia, ou seja, está ocioso, mas, pode mudar imediatamente
para outro estado, como saltar, andar, correr ou realizar uma ação especí�ca.
Portanto, o animator controller fornece uma visão geral de todas as
transições do objeto. Permite que o usuário de�na os gatilhos para disparar
diferentes animações. Com a janela Animator aberta, pressione a tecla A para
centralizar e visualizar todos os estados de transição do objeto. O any state ,
ou qualquer estado, é um estado especial que está sempre presente na janela
do animator controller . Sua funcionalidade é permitir a transição para um
estado especí�co, independentemente do estado atual do objeto. Os valores
dos parâmetros das transições podem ser controlados por scripts, que
podem ser vistos na demonstração no �nal desta unidade.
atividade
Atividade
Leia o excerto a seguir:
“A produção de jogos digitais era menos complicada 30 anos atrás. Em apenas seis
semanas, uma pessoa criava o design, escrevia o código, gerava os recursos grá�cos
e testava a funcionalidade de um jogo. Naquela época, alguns personagens
constituídos de blocos e uma ótima jogabilidade entretinham os jogadores por
horas, o que tornava fácil para uma só pessoa executar todas as tarefas de
desenvolvimento do jogo”.
CHANDLER, H. M. Manual de Produção de Jogos Digitais. [S.l.]: Bookman, 2012.
Atualmente, para desenvolver um jogo, é preciso levar em consideração inúmeros
fatores, desde a de�nição de uma ideia central, da jogabilidade, mecânica, roteiro,
gerenciamento de projetos, entre outros.  Portanto, é necessário considerar a
natureza multidisciplinar de um jogo eletrônico. Diante disso, analise as alternativas
a seguir.
I.O Unity 3D contém diversos recursos de animação para jogos tridimensionais. Para
jogos bidimensionais é necessário importar ativos de terceiros da Unity Store.
II. A janela de animação é responsável por animar os GameObjects usando a técnica
tradicional de animação quadro a quadro.
III. Os chamados quadro-chaves são marcações realizadas exclusivamente pelo
Unity em uma linha de tempo.
IV. Para habilitar a Animation window, basta acessar menu do Unity > Window >
Animation > Animation.
Está correto o que se a�rma em:
a) II e IV, apenas.
b) I e II, apenas.
c) II e III, apenas.
d) I e IV, apenas.e) IV, apenas.
indicações
Material
Complementar
LIVRO
Manual de produção de jogos digitais
Editora: Bookman
Autor: Heather M. Chandler
ISBN: 978-8540701830
Comentário: um guia completo da produção de jogos
digitais, mas do ponto de vista do produtor, do líder do
projeto, o que está atrás das cortinas do projeto?
Apresenta tópicos gerais que vão da pré-produção,
testes, marketing, além de mostrar em detalhe um
projeto na prática.
FILME
Indie game: the movie
Ano: 2012
Comentário: um documentário sobre o quão difícil é a
produção de jogos independentes. O �lme aborda a
perspectiva dos desenvolvedores por trás dos jogos de
sucesso; Braid, Super Meat Boy e Fez. O documentário
é sobre a linha tênue entre a paixão e o sacrifício entre
realizar o sonho de desenvolver um jogo.
TRA ILER
conclusão
Conclusão
Um estágio importante no desenvolvimento de qualquer jogo é a escolha
ideal das ferramentas de criação. O desenvolvimento de jogos é uma área
multidisciplinar, que na maioria das vezes exige empatia, criatividade,
inovação e persistência. Ou seja, um jogo é desenvolvido para os jogadores e,
seu processo de desenvolvimento precisa ser centrado no usuário. A
ferramenta correta pode auxiliar no teste de hipóteses especí�cas de um
projeto, auxiliando no desenvolvimento de uma ideia. Desenvolver um jogo
não é uma tarefa trivial, exige um enorme esforço e um profundo
conhecimento em diversas áreas, o Unity é uma ferramenta com diversas
funcionalidades para facilitar o processo de criação. Lembre-se de que a
prática é o melhor caminho para se familiarizar com os métodos básicos de
qualquer ferramenta de criação.
referências
Referências
Bibliográ�cas
CHANDLER, H. M. Manual de Produção de Jogos Digitais . [S.l.]: Bookman,
2012.
POPOLIN NETO, M. A multiprojeção de ambientes virtuais gerados por
motores de jogo: o histórico e o design de uma solução genérica aplicado no
motor de jogo Unity. 77 f. Dissertação (Mestrado) – Instituto de Biociências,
Letras e Ciências Exatas Universidade Estadual Paulista Júlio de Mesquita
Filho, 2015. Disponível em: http://hdl.handle.net/11449/138457 . Acesso em: 9
jan. 2020.
SALEN, K.; ZIMMERMAN, E. Rules of play: game design fundamentals.
Cambridge, Massachusetts: The MIT Press, 2004.
TEOTÔNIO, W.; ARAÚJO, A. Desenvolvimento de Jogos para Dispositivos
Móveis utilizando o Motor de Jogo Unity 3D: um Estudo de Caso. 2017.
Disponível em: https://bit.ly/39dubvx . Acesso em: 9 jan. 2020.
UNITY User Manual (2019.2). Unity , [2019]. Disponível em:
www.unity3d.com/support/documentation/Manual . Acesso em: 1º de dez.
2019.
http://hdl.handle.net/11449/138457
https://www.researchgate.net/publication/320273327_Desenvolvimento_de_Jogos_para_Dispositivos_Moveis_utilizando_o_Motor_de_Jogo_Unity_3D_um_Estudo_de_Caso
http://www.unity3d.com/support/documentation/Manual

Mais conteúdos dessa disciplina