Buscar

PROGRAMAÇÃO PARA JOGOS 2D

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Programação para jogos 2D
Unidade 1 - Orientação a objetos
Autor: Vanessa Pereira do Nascimento
Revisor técnico: Renato Medeiros
Iniciar
Introdução
Como programar um jogo 2D e qual linguagem de programação escolher? Qual
software pode ser utilizado para desenvolver essa habilidade e poder aplicá-la no
mercado de trabalho? Como aprender programação de jogos sem deixar de lado a
importância do jogo 2D como peça interativa multimídia?
Essas perguntas serão respondidas durante seus estudos, nesta disciplina. A
programação para jogos 2D aborda o desenvolvimento de jogos em ambientes
compostos por duas dimensões, incluindo o trabalho com algoritmos e sua relação
com os elementos audiovisuais que compõem um jogo. Durante as aulas, você
entrará em contato com as possibilidades de movimentação de personagens,
simulação física, inteligência arti�cial e de interatividade nos games .
Para o desenvolvimento de suas habilidades em programação, utilizaremos este
software popular e pro�ssional: a Unity . Gratuito para aprendizagem e para
desenvolvedores independentes, esse programa é uma game engine , isto é, o
chamado motor de jogo, software que oferece diversas funcionalidades, com o
objetivo de guiar o desenvolvimento de jogos digitais.
Através de exercícios práticos, que incluem a criação de três projetos de jogos,
durante esta disciplina, você poderá exercitar sua criatividade, enquanto aprende
sobre os conceitos de programação e as especi�cidades de se programar um jogo
2D.
Além da apresentação da ferramenta computacional descrita anteriormente, nesta
primeira unidade, serão abordados os conceitos e a de�nição da Programação
Orientada a Objetos. Esse paradigma de programação será exempli�cado, enquanto
seus principais conceitos (classe, objeto, herança, encapsulamento e polimor�smo)
são apresentados.
Prepare-se para dar forma a suas ideias de jogos 2D. Vamos partir de interações
básicas, para que ao �nal da disciplina você tenha desenvolvido a capacidade de
programar novos ambientes interativos. Bons estudos!
Além da apresentação da ferramenta computacional descrita anteriormente, nesta
primeira unidade, serão abordados os conceitos e a de�nição da Programação
Orientada a Objetos. Esse paradigma de programação será exempli�cado, enquanto
seus principais conceitos (classe, objeto, herança, encapsulamento e polimor�smo)
são apresentados.
Prepare-se para dar forma a suas ideias de jogos 2D. Vamos partir de interações
básicas, para que ao �nal da disciplina você tenha desenvolvido a capacidade de
programar novos ambientes interativos. Bons estudos!
1. Orientação a objetos
A Programação Orientada a Objetos (POO), também chamada de Orientação a
Objetos (OO), é um dos paradigmas de programação existentes, isto é, é um dos
modos de se programar. Por paradigma, consideramos uma padronização, e a OO é
uma das mais utilizadas no mercado.
Desenvolvido durante a década de 1960, esse estilo de programação tem como foco
principal a aproximação entre a linguagem utilizada, em um programa
computacional, com aquela que utilizamos para descrever as coisas no mundo físico.
É por esse motivo que a palavra objeto nomeia esse paradigma, já que um objeto
representa aqui qualquer coisa que apresente características e comportamentos.
Em uma POO os dados, no caso os objetos, direcionam a programação, ao invés das
ações. Para exempli�car, imagine um sistema de e-commerce, o comércio eletrônico.
Para programar o sistema de uma determinada loja on-line podemos de�nir as
seguintes ações: exibir produto, adicionar ao carrinho de compras, cadastrar usuário,
cadastrar endereço de entrega, fazer check-out , dentre outras. Ao optar por uma
linguagem de programação que possibilita a OO, podemos programar o mesmo
sistema com foco nos dados, em seus objetos, que seriam: o produto, o usuário (e
uma de suas características seria seu endereço), o pedido.É devido a essa
organização, focada em objetos que interagem entre si, que a OO é um paradigma
muito utilizado para a programação de jogos. A interação entre diferentes objetos é
parte essencial de um jogo. A possibilidade de programar um jogo com esse foco,
facilita não somente a organização do projeto, mas também a criação do código.
Além disso, muitos softwares de desenvolvimento de jogos apresentam scripts , o
código, com suporte a POO.
Durante esta unidade, serão apresentados os principais conceitos da Orientação a
Objetos, que são: classe, objeto, herança, encapsulamento e polimor�smo. Após o
entendimento desses conceitos, por meio de exempli�cações nos universos dos
games, iniciaremos os exercícios práticos no software Unity, que será apresentado a
seguir.
1.1 Unity
Game engine (em português, motor de jogo) é um software voltado ao
desenvolvimento de jogos digitais, também chamados apenas de games . Esse tipo de
programa computacional reúne diversas funcionalidades presentes em jogos 2D ou
3D, sendo as principais:
Simulação física;
Suporte a conteúdos multimídia;
Renderização de grá�cos;
Implementação de inteligência arti�cial;
Gerenciamento de arquivos;
Linguagem de programação que suporta scripts (o que automatiza a execução
de tarefas).
Lançado em 2005, pela empresa Unity Technologies, a Unity é uma das engines mais
utilizadas, atualmente, na indústria de games . Títulos de destaque, como Pokémon
GO, Hearthstone : Heroes of Warcraft, Monument Valley e Cuphead , por exemplo, foram
desenvolvidos nessa game engine . A versão gratuita da Unity pode ser utilizada por
desenvolvedores, instituições educacionais e estúdios independentes que faturam
até um determinado valor. Para empresas com maiores lucros, é necessário adquirir
uma das licenças pagas da Unity . Essas informações podem ser acessadas na loja do
site o�cial, no endereço: < store.unity.com >.
Com ambiente para desenvolvimento de jogos em 2D ou 3D, a Unity apresenta ainda
outras funcionalidades de destaque como: software multiplataforma; extensa
documentação o�cial; comunidade ativa de desenvolvedores; repositórios de
conteúdo livre e fechamento de arquivos para diversas plataformas. Com essas
características, a Unity torna-se uma ferramenta acessível também para estudantes,
Você sabia
Informações sobre a produção dos games desenvolvidos, na Unity , podem ser
conferidas no mostruário o�cial, disponível em: < unity.com/madewith >. 
http://store.unity.com/
http://unity.com/madewith
podendo ser instalada em diferentes sistemas operacionais e suas produções
�nalizadas para consoles, computadores, dispositivos móveis e/ou internet.
A linguagem de programação nativa da Unity é a C# (lê-se: C sharp ). Similar às
linguagens Java e C++ (lê-se: C mais mais), a C# é multiparadigma, incluindo dentre
eles, a Orientação a Objetos. Na Unity , o controle dos objetos de um jogo pode ser
feito por meio de scripts , isto é, trechos de código que permitem a modi�cação de
comportamentos, a manipulação de eventos e as interações do jogador. Um script
também pode criar efeitos grá�cos, controlar a simulação física e a inteligência
arti�cial, presente no game. A utilização de scripts, em exemplos práticos, será
abordada mais adiante, ainda nesta unidade.
1.1.1 Instalação
Antes de utilizar a Unity , é fundamental entender como se dá seu processo de
instalação. Ao contrário de muitos programas, para baixar esse software , é
necessário primeiro instalar o Unity Hub , que é um gerenciador das versões, licenças,
módulos, contas de usuário e projetos criados. Esse programa pode ser baixado pelo
link: < store.unity.com/download >.
Após a instalação do Hub, você poderá escolher quais versões da Unity deseja
instalar, além da última versão instável. Isso acontece porque essa é uma engine que,
constantemente, é atualizada, o que garante uma melhor experiência para o
desenvolvedor. Devido a essas atualizações, um projeto precisa ser editado na
mesma versão em que foi criado, ainda que seja uma versão anterior do programa.
Portanto, é comum umamáquina manter instaladas várias versões do software .
Ainda no ambiente do Hub , você poderá criar uma Unity ID , que é uma identi�cação
de usuário que permite compartilhar projetos, acessar a comunidade de
desenvolvedores e acessar os cursos da plataforma. Parte dos tutoriais o�ciais
podem ser acessados diretamente no editor, como é chamado o ambiente dessa
engine . Para acessá-los, siga as orientações do próximo tópico.
1.1.2 Interface
http://store.unity.com/download
Através do Hub da Unity , temos acesso a área de aprendizagem (também disponível
no site o�cial). Ao clicar na opção “ Learn ”, podemos seguir os tutoriais embutidos
em templates , que são modelos de projetos que podem ser modi�cados. Nas opções
de microgames , que são projetos menores, temos um template 2D do tipo jogo de
plataforma. Para acessar esse tutorial de apresentação do software , clique em “
Platformer Microgame ” e faça o download desse projeto. Pode ser que, para abri-lo,
você precise baixar outra versão do editor, isso poderá ser feito na opção “ Installs”
do Hub .
A primeira vez que a Unity é aberta são carregados mais arquivos de sistema, por
esse motivo o processo é mais demorado. No tutorial embutido no projeto “
Platformer Microgame ”, temos acesso a um guia rápido que abrange da modi�cação
de um objeto ao compartilhamento do jogo �nalizado.
Figura 1 - Interface da Unity. Fonte: Elaborado pela autora. 2020
Independentemente de você seguir esse tutorial, no momento apenas observe as
janelas, ou painéis, do software . Como em diversos programas, podemos ver uma
barra de menu, contendo opções comuns como Arquivo ( File ), Janela ( Window ) e
Ajuda ( Help ), além de outras opções especí�cas dessa engine . Logo abaixo, aparece
a barra de ferramentas, a Toolbar . Nessa barra, �cam disponíveis ferramentas para
manipular os objetos e navegar pela cena, como é chamada a área para inserção dos
elementos do jogo. A Toolbar também exibe controles para teste de jogabilidade,
como play e pause , além de outras opções.
Abaixo da barra de ferramentas, está localizada a janela Hierarquia ( Hierarchy ), que
exibe a árvore do projeto, elencando todos os objetos da cena. Ao lado dessa janela,
aparece a Cena ( Scene ), o ambiente para edição do projeto. A janela Game aparece
oculta, podendo ser acessada ao clicar na aba de mesmo nome, ao lado da aba Scene
. Nessa janela, podemos ver como o jogo �cará após �nalizado.
O inspetor de propriedades ( Inspector ) é disposto em uma janela ao lado da Scene e
oferece um menu contextual, isto é, seu conteúdo se modi�ca de acordo com o
objeto selecionado na cena. O último painel mais utilizado no software , e localizado
na base da tela, é o de projeto ( Project ). Nessa janela, temos acesso a biblioteca de
assets , que são os itens disponíveis para utilização no projeto.
Por �m, vemos a janela Tutorials, localizada à direita da tela. Para seguir os tutoriais
disponíveis para o projeto aberto, o “ Platformer Microgame ”, basta clicar em uma das
opções desse painel.
É importante ressaltar que a interface da Unity pode ser customizada, de acordo com
o projeto, além de oferecer diversos outros painéis que facilitam o trabalho do
desenvolvedor.
2. Classes e objetos
Para que uma programação seja otimizada, é necessário que seja escrita de acordo
com os conceitos da linguagem escolhida. Isso signi�ca que, não basta utilizar uma
linguagem de programação que suporte Orientação a Objetos, o código precisa ser
escrito de acordo com a POO. Como muitas linguagens são multiparadigmas, isto é,
podem ser codi�cadas de diferentes maneiras, pode haver confusão entre qual
paradigma de programação está sendo seguido. Os dois paradigmas mais utilizados
na programação de jogos são: Orientação a Objetos e Programação Estruturada.
A Programação Estruturada utiliza comandos em uma determinada sequência. Nesse
modelo, existe um �uxo único do programa que relaciona diferentes condições e
repetições de código. Lembre-se do exemplo dado na primeira aula desta unidade:
um e-commerce. Naquele exemplo, a programação que enfatiza as ações do sistema
é a Programação Estruturada.
Como vimos, a Programação Orientada a Objetos pode ser mais facilmente aplicada
ao desenvolvimento de games , por isso foi escolhida para esta disciplina. Para
programar de acordo com a Orientação a Objetos é necessário, portanto, conhecer
seus conceitos. Como base deste paradigma, existem dois conceitos que se
relacionam a todos os demais: classes e objetos.
Uma classe é de�nida como um conjunto de objetos, essa unidade se dá por
características e comportamentos em comum. Como em OO um objeto é uma
representação de qualquer coisa, o escopo do que é uma classe varia de acordo com
outro conceito relacionado: a abstração. A partir da abstração, podemos criar
representações de elementos do mundo físico, observando determinadas
características e comportamentos.
Para facilitar o entendimento, vamos imaginar um jogo do tipo plataforma. No
projeto de jogo que abrimos, no início desta disciplina, por exemplo, há inimigos, um
jogador e peças coletáveis. Nesse ambiente, podemos indicar que essas três
categorias observadas representam três classes distintas de objetos. Isso signi�ca
que a classe de inimigos, reúne objetos (nesse caso cada indivíduo), com
características e comportamentos em comum, assim como a classe de peças
coletáveis. Veja, é possível que tais objetos se diferenciem entre eles, mas sua base,
seu molde, permanece o mesmo. Ainda que a classe jogador tenha somente um
objeto, ela continua existindo, pois caso contrário não seria possível a construção de
um objeto do tipo jogador. A classe, portanto, não tem um “corpo”, apenas se
materializa por meio da criação de objetos.
As características de uma classe são chamadas de atributos e os comportamentos
são os métodos. Os atributos estão associados ao exercício de abstração, feito
durante a criação da classe, isto é, podem ser mais ou menos especí�cos, criados em
maior ou menor quantidade. Voltando ao exemplo do jogo de plataforma, a classe
“inimigos” pode apresentar os seguintes atributos: cor, tamanho e velocidade. Nesse
caso, cada objeto inimigo, inserido na cena, pode apresentar diferentes
possibilidades dessas três características. Cada um dos valores desses atributos são
chamados de estados. A mesma classe “inimigos” poderia, por exemplo, apresentar
atributos para força de ataque e barra de energia. Dessa maneira, teríamos duas
características a mais nos objetos dessa classe.
Os comportamentos de uma classe, os métodos, se referem às ações de�nidas
durante o exercício de abstração. Os objetos inimigos possuem o atributo
velocidade, portanto, poderiam apresentar o comportamento atacar e/ou andar.
Outros comportamentos possíveis seriam morrer, tocar um som e o que mais for
necessário de ações no jogo.
No próximo tópico, você poderá exercitar esses conceitos durante a escrita do nosso
primeiro código em C#.
2.1 Scripts na Unity
Para aplicar os conceitos apresentados até aqui, vamos iniciar um novo projeto na
Unity . Antes de abrir o programa, é importante ressaltar que a escrita de scripts
nessa engine é feita em um editor externo, em uma IDE, do inglês, integrated
development environment, um ambiente integrado de desenvolvimento. Por padrão
nos sistemas operacionais macOS e Windows , a Unity �ca integrada com a IDE Visual
Studio . Esse programa é gratuito para uso pessoal, sendo necessário assinar no caso
de empresas, independentemente, de seu porte. Caso não tenha instalado, o Visual
Studio na sua versão gratuita ( Community ) pode ser baixado no link: <
visualstudio.microsoft.com >.
Para iniciarmos abra o Unity Hub e escolha a opção projetos ( Projects ). Clique no
botão novo ( New ) e escolha um template 2D. Renomeie o arquivo e escolha o
diretório para salvá-lo nas opções que aparecem à direita. Ao clicar em criar ( Create )
a Unity abrirá o novo projeto, como mencionado anteriormente,nessa primeira vez
que o projeto é aberto, o processo é mais demorado.
Você pode observar que a interface está muito parecida com a que acessamos no
início da disciplina. Veja que a janela da cena está maior e a janela de tutoriais não
está aberta. Essa organização de painéis é a padrão para o template que foi
escolhido, mas pode ser customizada.
Assim como muitas game engines , a Unity trabalha com assets , isto é, elementos que
podem ser inseridos no projeto. Assets são quaisquer itens que podem ser
adicionados ao jogo, como por exemplo, imagens, áudios, scripts , dentre outros.
http://visualstudio.microsoft.com/
Para que um script seja lido ele precisa estar associado a algum objeto inserido na
cena. Para começar, vamos adicionar um novo asset do tipo sprite , que é um grá�co
2D. Clique na opção do menu Assets > Create > Sprites > Square .
Observe que um novo asset foi adicionado ao painel de projeto. Renomeie o item
para “Jogador”. Nesse momento, Jogador é um elemento que pode ser utilizado no
projeto, mas ainda não é um objeto inserido na cena. Para que isso aconteça, clique
e arraste esse asset para a cena. Observe que no painel de hierarquia, onde aparecia
apenas o objeto câmera ( Main Camera ), exibe agora o objeto Jogador.
2.1.1 Estrutura básica do script
Agora que há um objeto em cena, temos a possibilidade de criar seus
comportamentos, os métodos, por meio de scripts . Clique na opção do menu Assets
> Create > C# Script . Renomeie esse script para “Jogador”. Ao clicar uma vez no script
você poderá ver suas propriedades na janela inspetor. No topo desse painel há a
opção para abri-lo ( Open ). Por padrão, a Unity deve abrir esse novo script no software
Visual Studio . Caso isso não aconteça, con�gure as preferências do programa no
menu: Edit > Preferences > External Tools > External Script Editor . Nesse campo, você
deverá escolher a opção Visual Studio .
Figura 2 - Os assets do projeto. Fonte: Elaborado pela autora. 2020
Conforme pode ser observado na �gura 3, um novo script já apresenta uma estrutura
básica. Nas linhas 1, 2 e 3 do código vemos as especi�cações do C# para a utilização
na Unity . Na linha 5, aparece a de�nição da classe desse script , observe que o nome
da classe é o mesmo do script . Antes da palavra class (classe) temos a de�nição
public (pública), indicando como essa classe poderá ser acessada no projeto. Esse
detalhe será abordado mais adiante ainda nesta unidade. A palavra MonoBehaviour
aparece ao �nal da linha, indicando que esta é a classe base dos scripts da Unity . Isso
signi�ca que cada classe criada na Unity poderá acessar determinados métodos.
As linhas 7 e 13 iniciam com duas barras (//), o que indica que são comentários,
textos inseridos que não interferem na leitura do código. Esses comentários estão
informando a funcionalidade dos dois métodos apresentados nessa estrutura básica:
Start e Update . Nesse modelo, o método Start �naliza na linha 11. Ele é responsável
por indicar as ações que serão executadas no momento que o objeto for criado,
durante a execução do código. Em um método, as ações são inseridas entre as
chaves, e seus parâmetros, caso existam, devem �car entre os parênteses.
Já o método Update abrange as ações que são executadas a todo momento que o
código estiver rodando, na mesma velocidade dos quadros por segundo que a
performance do jogo permitir. Isso signi�ca que se o jogo estiver rodando a 60
quadros por segundo (60 fps, do inglês frames per second ) por exemplo, as ações
descritas dentro do método Update acontecerão 60 vezes a cada segundo. A palavra
void , presente antes de cada um dos métodos apresentados, indica que ambos não
retornam nenhum valor. Durante esta disciplina, você entrará em contato com
métodos que retornam determinados valores.
2.1.2 Olá, mundo!
Por enquanto, vamos adicionar apenas uma linha de código para vê-lo, sendo
executado quando iniciarmos nosso jogo. Esse exercício é muito comum ao
aprendermos uma linguagem de programação: o “Olá, mundo!”. Entre as duas
chaves do método Start , escreva o mesmo código que aparece na �gura 3, localizado
na linha 10.
Figura 3 - Estrutura básica de um script. Fonte: elaborado pela autora. 2020
A classe Debug facilita a depuração do código, isto é, a identi�cação de erros. Através
do seu método Log, podemos exibir alguma mensagem no painel Console da Unity .
Ele �ca localizado na mesma área da janela Project , mas na aba de mesmo nome.
Veja que a classe Debug não foi criada em nosso código. Ela já é uma classe da
engine, o que �zemos foi apenas criar um objeto dessa classe, que apresenta o
comportamento de exibir uma mensagem (o método Log ) com um argumento (o
texto “ Hello World ”). O ponto e vírgula, no �nal da linha, indica que essa a�rmação já
foi concluída e deve ser colocado.
Salve o código em Arquivo > Salvar e volte para o ambiente da Unity . No momento
nosso código não será lido, pois não foi associado a nenhum objeto em cena. Clique
e arraste o script da área de assets para cima do objeto no painel hierarquia. Agora,
clique no objeto jogador, localizado na cena, e veri�que que dentre seus
componentes na janela inspetor, aparece o script criado.
Abra a janela Console , clicando na aba de mesmo nome, e na barra de ferramentas,
clique em Play . Você deve ter visualizado o texto “Olá, mundo!”. Observe que ele só
aparece uma vez, pois foi colocado dentro do método Start . Se tivesse sido colocado
dentro do método Update apareceria diversas vezes por segundo.
Figura 4 - Script sendo executado. Fonte: Elaborado pela autora. 2020
Por enquanto, nosso objeto colocado em cena não pode ser controlado. Ele
apresenta apenas a função de exibir “Olá, mundo!”, para o desenvolvedor, quando o
jogo é iniciado. Antes de continuar o desenvolvimento do projeto, no próximo tópico
você entrará em contato com mais conceitos fundamentais de POO.
Você quer ver
A Unity oferece gratuitamente um ambiente de aprendizagem em seu site o�cial.
Para acessar mais conteúdos, é possível ainda assinar o serviço premium . Os
tutoriais, projetos de exemplo e cursos podem ser feitos e seu progresso salvo
em sua Unity ID . Acesse as videoaulas, no endereço: < learn.unity.com >. 
http://learn.unity.com/
3. Construtores e herança
Um objeto pode apresentar variações nos atributos e métodos de sua classe, mas
�ca limitado ao que a classe oferece de possibilidades. Dessa maneira, as
características e comportamentos de um objeto �cam limitados à classe, a qual ele
pertence. Caso a abstração do programa relacione um mesmo objeto a diferentes
classes, deve ser criada uma subclasse, que apresenta atributos e métodos de ambas
as classes de que é derivada.
Em uma classe inimigo, por exemplo, podemos criar uma subdivisão, ou subclasse,
chamada boss (chefe). A classe boss herdará, assim, os atributos e métodos da classe
inimigo, mas ela poderá acrescentar mais possibilidades, como é comum em
diversos games que diferenciam os inimigos de uma fase daquele que será
enfrentado ao �nal do percurso.
Nesse exemplo, a classe inimigo é “mãe” da classe boss , respectivamente,
identi�cada como sua “�lha”. Essa relação, entre as classes, é chamada de herança.
Outro importante conceito da POO. Uma herança simples acontece quando uma
classe herda de outra e uma herança múltipla, quando uma classe herda de outras
duas, somando seus atributos e métodos. É importante ressaltar que apesar de esse
ser um conceito da OO, a linguagem C# apenas permite a criação de herança
simples. Caso o projeto necessite de uma abstração semelhante àquela que a
herança múltipla oferece, é possível trabalhar com uma interface . Esse conceito será
abordado mais adiante, durante os estudos desta disciplina.
Ao criar um objeto da classe boss , podemos indicar quais valores de atributos e
métodos ele vai apresentar no momento de sua criação. A determinação de valores
por padrão, logo na criação de um objeto é possibilitada pela utilização de um
construtor,outro importante conceito da POO. Construtores são métodos que
podem ou não ser criados em uma classe, mas se existirem, apenas um deles pode
ser chamado, durante a inicialização do objeto. Esse método, ainda que não
obrigatório, é importante para a de�nição de uma classe quando é necessário iniciar
um valor ou ativar um outro método antes da construção do objeto.
Um construtor tem, necessariamente, o mesmo nome de sua classe, e uma classe
pode apresentar diversos construtores. Em nosso exemplo, a classe inimigo pode,
por exemplo, apresentar um construtor que de�ne uma velocidade padrão para seus
objetos e um outro construtor que de�ne uma velocidade especial, que poderá ser
chamada pela nossa classe boss , no momento de criação de uma instância, isto é, na
criação de seu objeto.
4. Encapsulamento e
polimorfismo
Outro importante conceito da POO é o Encapsulamento. Em OO, dados podem ser
manipulados, de acordo com seu encapsulamento, que correspondem a seus
modi�cadores de acesso. Os dados que podem ser encapsulados são os atributos e
métodos de uma classe. Os três tipos de encapsulamento são: público, privado e
protegido.
O tipo público permite que os dados, ali inseridos, sejam acessados no painel
inspetor de propriedades tanto pela classe base, a classe mãe, como pelas suas
derivadas, as �lhas. Um encapsulamento desse tipo pode ser utilizado, por exemplo,
para um atributo velocidade. Dessa maneira será possível alterar o valor da
velocidade na própria interface da Unity , sem a necessidade de editá-lo diretamente
no código. Será possível também con�gurar diferentes velocidades para cada
instância dessa classe, ou seja, para cada um de seus objetos. Dados públicos podem
ser acessados por quaisquer classes do projeto, sejam classes base ou derivadas.
Caso esse acesso não deva estar disponível, para evitar erros de desenvolvimento ou
porque não será utilizado fora do script original, o encapsulamento desse mesmo
atributo poderá ser con�gurado como do tipo privado. O modi�cador de acesso
privado é o tipo padrão da Unity . Quando um dado é do tipo privado ele não pode
ser acessado no inspetor de propriedades e só existe na classe em que foi criado,
não podendo ser modi�cado pelas classes derivadas.
O terceiro tipo de encapsulamento é o protegido. Nesse tipo de modi�cador de
acesso, os dados somente podem ser acessados pela classe base e suas
descendentes, sendo compartilhado por toda sua hierarquia. A de�nição do
encapsulamento, para atributos e métodos de uma classe, serve para proteger todos
os dados que não precisam ser públicos em seu código.
O último conceito a ser abordado, nesta unidade, é o Polimor�smo, que diz respeito
às diferentes maneiras que uma tarefa pode ser realizada. Isso possibilita que um
mesmo método da classe base seja implementado em objetos de classes derivadas e
diferentes. Continuando nosso exemplo do tópico anterior, a classe inimigo poderá
apresentar um método para tocar um efeito sonoro especí�co. A subclasse boss
poderá, graças ao polimor�smo, utilizar o mesmo método para tocar um efeito
sonoro diferente. Isso acontece porque o polimor�smo permite substituir as ações
do método original.
A utilização desse conceito na prática possibilita o reaproveitamento de código, já
que não é preciso criar vários métodos, e eles podem ser alterados diretamente na
classe. Veja que, em nosso exemplo, a classe boss aproveita o método da classe
inimigo, ainda que o implemente de maneira diferente.
Os conceitos de encapsulamento e polimor�smo poderão ser melhor �xados após
sua utilização em um projeto de jogo. A partir da próxima unidade, iniciaremos um
projeto de jogo que aplicará todos os conceitos estudados até aqui.
Você quer ler
O livro Lógica de Programação, do autor Gley Fabiano Cardoso Xavier, é indicado
para relembrar ou aprender conceitos de programação úteis ao seu
desenvolvimento nesta disciplina. 
Síntese
A Orientação a Objetos é muito utilizada para a programação de jogos 2D. Ao
contrário da Programação Estruturada, a OO permite que o código seja escrito com
foco nos objetos que interagem em uma game . Dentro da game engine Unity , vimos
que é possível utilizar a linguagem de programação C# para a criação de scripts ,
adicionando assim comportamentos a seus objetos.
A vantagem de aprender a programar jogos 2D, diretamente em uma engine , como a
Unity , é a possibilidade de exercitar os conceitos abordados, facilitando a �xação do
conteúdo enquanto atualiza seus conhecimentos voltados ao mercado de trabalho.
Apesar de termos explorado o software apenas para conhecer a estrutura de seus
scripts , esse conhecimento será essencial para o acompanhamento das demais aulas
desta disciplina.
A partir da próxima aula, iniciaremos ao menos um projeto de jogo por unidade, o
que permitirá a aplicação de cada um dos conceitos que foram abordados até aqui.
Durante esta unidade, você entrou em contato com os seguintes tópicos:
• Comparação dos paradigmas de Programação Estruturada e OO;
• Conceitos da Programação Orientada a Objetos;
 Classes; 
 Objetos; 
 Construtor; 
 Herança; 
 Encapsulamento; 
 Polimor�smo.
• Instalação, interface e características da game engine Unity ;
• Estrutura básica e criação de um script em C#.
Download do PDF da unidade
Bibliografia
XAVIER, Gley Fabiano Cardoso. Lógica de Programação . São Paulo: Editora Senac
São Paulo, 2011. 
(Documentação da Unity). Disponível em: https://docs.unity3d.com . Acesso em
25/03/2020. 
Referências Imagéticas: 
Figura 1 a 4: Cópias de tela produzidas pela própria redatora. 
https://docs.unity3d.com/

Continue navegando