Aprendendo a programar jogos em Unity: construindo os scripts responsáveis pela gestão da barra inferior

Seja bem-vindo(a) ao GameDev: Aprendendo a programar jogos em Unity de hoje! Depois de iniciarmos, no encontro anterior, a construção e a configuração dos elementos gráficos pertencentes à barra inferior do Canvas da cena, é chegada a hora de iniciarmos a construção dos scripts que farão as informações sobre as pílulas a serem coletadas aparecerem na tela em momentos adequados.Caso hoje seja a primeira vez que você teve contato com conteúdos de nossa série, sinta-se especialmente convidado a juntar-se a nós nessa interessante jornada de aprendizados sobre o universo do desenvolvimento de games.Desde o início da série, estamos colocando a mão na massa para elaborar jogos de diferentes estilos, como platformers e puzzles. Utilizando a ferramenta Unity, vamos aprendendo variados conceitos por meio do desenvolvimento de projetos práticos.No momento, estamos elaborando o projeto Consultório do Dr. Tratanildo, um jogo ambientado em um excêntrico consultório médico tridimensional, cujo estilo de gameplay adotado é inspirado em clássicos dos anos 1980 e 1990, como Dr. Mario (Nintendo, 1990) e Pac-Man (Namco, 1980).Mesmo que você não tenha conhecimentos prévios sobre programação de jogos ou de sistemas, não se preocupe: nossa série é desenvolvida para que todos possam criar do zero um game para chamar de seu, abordando, a partir do primeiro texto, desde os tópicos iniciais do processo, como a instalação e a configuração da ferramenta Unity em nossos computadores, até atividades importantes da construção de uma aventura virtual, tais como a concepção das regras, a inserção de elementos multimídia nas fases e a codificação de scripts controladores dos mais diversos comportamentos e reações observados entre os elementos de um game.Venha conosco para que possamos seguir juntos nesta trilha rumo a novos conhecimentos!Controlador da barra inferiorUma das características mais interessantes do processo de criação de jogos utilizando game engines como a Unity é a possibilidade de realizarmos, de forma dinâmica, a construção de elementos no jogo alternando momentos de inserção visual de objetos em cena e momentos de codificação dos scripts responsáveis pelo funcionamento adequado dos entes de uma cena.Agora que já temos uma estrutura básica dos elementos visuais da barra inferior devidamente implementada, vamos “virar a chave” e partir para a codificação do funcionamento desse elemento recém-inserido em cena.Para tal, vamos abrir nosso projeto para edição. No Unity Hub, clique duas vezes sobre o item referente ao projeto Consultório do Dr. Tratanildo. Na interface inicial do editor, na aba Project, abra a pasta Assets, Scenes e, por fim, clique duas vezes no ícone da cena ConsultorioScene.Na aba Project, vamos criar dois novos scripts para permitir a exibição dos elementos da barra inferior em cena apenas ao movimentarmos o GameObject que representa Doutor Tratanildo em cena em direção às pílulas de saúde posicionadas sobre as prateleiras do consultório.Na aba Project, abra a pasta Assets e, em seguida, Scripts. Clique com o botão direito sobre uma área vazia da pasta e, no menu suspenso apresentado, selecione a opção Create e, em seguida, C# Script. Conceda o nome “ControllerBarraInferior” ao novo script criado, conforme indicado na imagem a seguir:Clique duas vezes sobre o ícone do script, para que possamos editar seu conteúdo no Visual Studio. Por enquanto, iremos acrescentar apenas algumas variáveis que serão responsáveis pela indicação de elementos importantes da interface gráfica da barra inferior.Acrescente ao final da lista de bibliotecas utilizadas (trecho inicial do código, composto por linhas iniciadas pela palavra “using”) a seguinte linha de código:using UnityEngine.UI;Dentro das chaves de declaração do script ControllerBarraInferior, insira o seguinte trecho de código:public Text TextoTeclaOpcao, TextoBarraInferior;A inserção da primeira linha indicou ao Unity que iríamos tratar, em algum trecho do código, de elementos da interface gráfica (UI) do game, como de fato fizemos, ao declarar variáveis públicas do tipo Text representando elementos que sofrerão alterações em seus conteúdos textuais por ação de outros scripts. Salve o script e volte ao editor do Unity para prosseguirmos com a edição do projeto.Na aba Hierarchy, selecione o GameObject BarraInferiorInfo, subordinado a Canvas. Na aba Inspector, por meio do botão Add Component, insira um novo componente de tipo Controller Barra Inferior. Após a inserção, conceda os seguintes valores a seus atributos:Texto Tecla Opcao: indique o objeto de nome ItemTecla;Texto Barra Inferior: indique o objeto de nome InfoOpcao.Aproveitando que estamos com o objeto BarraInferiorInfo em evidência, ainda na aba Inspector, desabilite o GameObject, pois sua ativação ocorrerá apenas em determinados momentos, por meio da ação de comandos a serem introduzidos no próximo script que iremos codificar.De volta à aba Project, ainda com a pasta Scripts aberta, crie um novo script e conceda

Abr 21, 2025 - 00:32
 0
Aprendendo a programar jogos em Unity: construindo os scripts responsáveis pela gestão da barra inferior
Seja bem-vindo(a) ao GameDev: Aprendendo a programar jogos em Unity de hoje! Depois de iniciarmos, no encontro anterior, a construção e a configuração dos elementos gráficos pertencentes à barra inferior do Canvas da cena, é chegada a hora de iniciarmos a construção dos scripts que farão as informações sobre as pílulas a serem coletadas aparecerem na tela em momentos adequados.

Caso hoje seja a primeira vez que você teve contato com conteúdos de nossa série, sinta-se especialmente convidado a juntar-se a nós nessa interessante jornada de aprendizados sobre o universo do desenvolvimento de games.

Desde o início da série, estamos colocando a mão na massa para elaborar jogos de diferentes estilos, como platformers e puzzles. Utilizando a ferramenta Unity, vamos aprendendo variados conceitos por meio do desenvolvimento de projetos práticos.

No momento, estamos elaborando o projeto Consultório do Dr. Tratanildo, um jogo ambientado em um excêntrico consultório médico tridimensional, cujo estilo de gameplay adotado é inspirado em clássicos dos anos 1980 e 1990, como Dr. Mario (Nintendo, 1990) e Pac-Man (Namco, 1980).


Mesmo que você não tenha conhecimentos prévios sobre programação de jogos ou de sistemas, não se preocupe: nossa série é desenvolvida para que todos possam criar do zero um game para chamar de seu, abordando, a partir do primeiro texto, desde os tópicos iniciais do processo, como a instalação e a configuração da ferramenta Unity em nossos computadores, até atividades importantes da construção de uma aventura virtual, tais como a concepção das regras, a inserção de elementos multimídia nas fases e a codificação de scripts controladores dos mais diversos comportamentos e reações observados entre os elementos de um game.

Venha conosco para que possamos seguir juntos nesta trilha rumo a novos conhecimentos!

Controlador da barra inferior

Uma das características mais interessantes do processo de criação de jogos utilizando game engines como a Unity é a possibilidade de realizarmos, de forma dinâmica, a construção de elementos no jogo alternando momentos de inserção visual de objetos em cena e momentos de codificação dos scripts responsáveis pelo funcionamento adequado dos entes de uma cena.

Agora que já temos uma estrutura básica dos elementos visuais da barra inferior devidamente implementada, vamos “virar a chave” e partir para a codificação do funcionamento desse elemento recém-inserido em cena.

Para tal, vamos abrir nosso projeto para edição. No Unity Hub, clique duas vezes sobre o item referente ao projeto Consultório do Dr. Tratanildo. Na interface inicial do editor, na aba Project, abra a pasta Assets, Scenes e, por fim, clique duas vezes no ícone da cena ConsultorioScene.

Na aba Project, vamos criar dois novos scripts para permitir a exibição dos elementos da barra inferior em cena apenas ao movimentarmos o GameObject que representa Doutor Tratanildo em cena em direção às pílulas de saúde posicionadas sobre as prateleiras do consultório.

Na aba Project, abra a pasta Assets e, em seguida, Scripts. Clique com o botão direito sobre uma área vazia da pasta e, no menu suspenso apresentado, selecione a opção Create e, em seguida, C# Script. Conceda o nome “ControllerBarraInferior” ao novo script criado, conforme indicado na imagem a seguir:

Clique duas vezes sobre o ícone do script, para que possamos editar seu conteúdo no Visual Studio. Por enquanto, iremos acrescentar apenas algumas variáveis que serão responsáveis pela indicação de elementos importantes da interface gráfica da barra inferior.

Acrescente ao final da lista de bibliotecas utilizadas (trecho inicial do código, composto por linhas iniciadas pela palavra “using”) a seguinte linha de código:

using UnityEngine.UI;

Dentro das chaves de declaração do script ControllerBarraInferior, insira o seguinte trecho de código:

public Text TextoTeclaOpcao, TextoBarraInferior;

A inserção da primeira linha indicou ao Unity que iríamos tratar, em algum trecho do código, de elementos da interface gráfica (UI) do game, como de fato fizemos, ao declarar variáveis públicas do tipo Text representando elementos que sofrerão alterações em seus conteúdos textuais por ação de outros scripts. Salve o script e volte ao editor do Unity para prosseguirmos com a edição do projeto.

Na aba Hierarchy, selecione o GameObject BarraInferiorInfo, subordinado a Canvas. Na aba Inspector, por meio do botão Add Component, insira um novo componente de tipo Controller Barra Inferior. Após a inserção, conceda os seguintes valores a seus atributos:
  • Texto Tecla Opcao: indique o objeto de nome ItemTecla;
  • Texto Barra Inferior: indique o objeto de nome InfoOpcao.
Aproveitando que estamos com o objeto BarraInferiorInfo em evidência, ainda na aba Inspector, desabilite o GameObject, pois sua ativação ocorrerá apenas em determinados momentos, por meio da ação de comandos a serem introduzidos no próximo script que iremos codificar.

De volta à aba Project, ainda com a pasta Scripts aberta, crie um novo script e conceda-lhe o nome “PegaPilula”, conforme exemplificado a seguir:

Abra o script para edição, clicando duas vezes sobre seu ícone. No Visual Studio, vamos iniciar sua codificação introduzindo dentro das chaves de declaração do script o seguinte trecho de código:

    public string tipoPilula;
    public ControllerBarraInferior barraInferior;

Esse script será atrelado a cada objeto representante das pílulas presentes no cenário. Por isso, é importante indicarmos à lógica do script qual o tipo da pílula a qual estamos interagindo e, também, qual é o objeto que representa a barra inferior, cujo conteúdo receberá influência das interações que realizaremos entre Doutor Tratanildo e os medicamentos do consultório.

Logo após a declaração das variáveis, introduza o seguinte trecho de código:

    private void OnTriggerEnter(Collider other)
    {
        if (other.name == "DoutorCenario" && Geral.ModoDeJogoCorrente == "BuscaMedicamentos")
        {
            barraInferior.TextoTeclaOpcao.text = "X";
            barraInferior.TextoBarraInferior.text = "Pegar pílula " + tipoPilula;
            
            barraInferior.gameObject.SetActive(true);
        }        
    }

Por meio do código recém-introduzido, quando ocorrer uma colisão entre o modelo 3D de Doutor Tratanildo (representado pelo objeto colisor de nome “DoutorCenario”) e o Collider do GameObject a qual o script estiver atrelado, serão realizadas as seguintes ações:
  • O texto indicativo presente na barra inferior (TextoBarraInferior) indicará ao jogador a sobre qual pílula ele pode coletar no momento; 
  • O elemento TextoTeclaOpcao, que representa qual tecla o jogador deverá pressionar para coletar o objeto, exibirá o caractere “X” na tela;
  • O GameObject representante da barra inferior de informações será ativado, exibindo na tela o conteúdo que acabamos de configurar.
Posteriormente, iremos codificar a coleta do item em si, detectando o pressionamento da tecla “X” no momento adequado.

Logo após as linhas de código que acabamos de introduzir, insira o seguinte trecho:

    private void OnTriggerExit(Collider other)
    {
        if (other.name == "DoutorCenario")
        {
            barraInferior.gameObject.SetActive(false);
        }
    }

O código recém-introduzido será responsável por desativar a barra inferior do Canvas assim que o modelo tridimensional de Doutor Tratanildo sair da “área de influência” da pílula de saúde no cenário, área essa representada pelo colisor em modo trigger configurado para o GameObject de cada pílula posicionada sobre as prateleiras do consultório.

Salve o script e retorne ao editor do Unity para prosseguirmos configurando as interações entre o personagem principal e os elementos cenográficos.

Atrelando scripts às pílulas do consultório

Na aba Hierarchy, selecione todos os objetos subordinados a PilulasCenograficas, que por sua vez encontra-se subordinado a CenarioFixo. Na aba Inspector, adicione a todos os GameObjects selecionados componentes do tipo Pega Pilula. Em seguida, altere o valor do atributo Barra Inferior de seus componentes do tipo Pega Pilula para o item de nome BarraInferiorInfo, conforme ilustrado a seguir:

Após a realização da configuração, na aba Hierarchy, selecione individualmente cada uma dos GameObjects representantes de pílulas subordinados a PilulasCenograficas e altere o valor do atributo Tipo Pilula de seus componentes do tipo Pega Pilula conforme listado a seguir:
  • Pilula_vermelha: conceda o valor “vermelha” (sem as aspas);
  • Pilula_amarela: conceda o valor “amarela”;
  • Pilula_azul: conceda o valor “azul”;
  • Pilula_verde: conceda o valor “verde”;
  • Pilula_roxa: conceda o valor “roxa”.
Realizamos, enfim, a configuração inicial para a correta interação entre o famoso médico e as pílulas miraculosas espalhadas pelo consultório. Vamos, agora, alterar alguns parâmetros de determinados elementos da cena para que possamos testar o funcionamento do que acabamos de implementar.

Na aba Hierarchy, selecione o objeto DoutorCenario, subordinado a Doutores, e ative-o, por meio da aba Inspector.

Realize a ação inversa para os objetos VisualizacaoLabirinto (subordinado a Canvas) e Labirinto: selecione-os e, via aba Inspector, desative-os.

Essas ações que realizamos visam exibir em cena os elementos de interação com o cenário, fora do “modo labirinto” a qual estávamos habituados a trabalhar nos últimos encontros.

Por fim, na aba Project, dentro da pasta Scripts, clique duas vezes sobre o ícone do script ControllerFase. Realizaremos uma pequena alteração em seu conteúdo no Visual Studio, modificando o valor da variável Geral.ModoDeJogoCorrente para “BuscaMedicamentos”, dentro da estrutura do método void Start():

Salve o script, feche o Visual Studio e retorne ao editor do Unity para, finalmente, experimentarmos a implementação da funcionalidade, indo à aba Game e clicando sobre o ícone do botão Play.

Note que, ao chegarmos bem próximo às pílulas de saúde do cenário, é exibida uma mensagem na parte inferior da tela, indicando qual botão deverá ser pressionado para que o jogador colete a pílula. Posteriormente iremos codificar esse comportamento.

Interrompa a simulação, clicando novamente sobre o ícone do botão Play. Não se esqueça de salvar a cena (menu File, opção Save) e o projeto (menu File, opção Save Project) antes de fechar o editor.

Próximos passos

Prosseguimos com êxito desenvolvendo mais uma etapa da construção de nosso game, desta vez mesclando etapas de codificação de scripts com configurações via editor do Unity para permitir a exibição da mensagem de coleta das pílulas no momento adequado. Porém, ainda temos muito trabalho pela frente: precisamos, por exemplo, implementar de fato a coleta dos medicamentos pelo médico e, também, corrigir alguns comportamentos estranhos, como o fato de que, em determinados momentos, certos personagens terem o hábito de “levitar” pelo cenário:

Assustador, não? Quanto a isso, fique tranquilo, pois é normal na construção de um jogo o envolvimento de etapas tanto de implementação das funcionalidades quanto de correção de bugs ou falhas que surjam inesperadamente.

Nosso próximo encontro será no dia 27 de abril. Até mais! Fique sempre ligado nas novidades do GameBlast!

Revisão: Ives Boitano