Especialmente a quem está lendo os conteúdos de nossa série pela primeira vez, convidamos a juntar-se a nós em uma divertida jornada de aprendizados sobre o universo do desenvolvimento de jogos digitais.
Utilizando a plataforma Unity como apoio, estamos aprendendo juntos a tirar do papel os games que sempre sonhamos em ver tornarem-se realidade, aprendendo na prática por meio do desenvolvimento de diferentes projetos práticos de programação de jogos.
No momento, estamos trabalhando na elaboração de Consultório do Dr. Tratanildo, um game ambientado em um consultório médico tridimensional, cuja característica principal é a mescla entre aspectos de gameplay de jogos em terceira pessoa e mecânicas de jogo inspiradas em clássicos das décadas de 1980 e 1990, como Dr. Mario (Nintendo) e Pac-Man (Namco).
Não se preocupe se você, até hoje, não teve oportunidades de conhecer aspectos de programação, pois nossa série é preparada de forma a permitir que mesmo quem não tem familiaridade com os aspectos técnicos da área possa criar seu primeiro game e, quem sabe, prosseguir desenvolvendo divertidas aventuras. Inclusive, em nossa série já tiramos do papel dois jogos bidimensionais bem divertidos: Forest Ping Pong e Motorista da Pesada. Garanto que vale a pena experimentá-los!
A partir do primeiro texto da série, são abordadas desde as etapas iniciais de todo esse processo, como a instalação e configuração da ferramenta Unity em nossas máquinas, até a criação, de fato, dos jogos e de suas regras, a codificação dos scripts controladores, a inserção de conteúdos multimídia e afins. Além disso, por meio de um índice de links disponibilizado no primeiro texto, você terá a oportunidade de conferir como foram criados os outros dois jogos citados.
Curtiu essa ideia? Então, não perca tempo: junte-se a nós nesta caminhada rumo a novos conhecimentos!
Configurando elementos
Ao entramos na etapa do projeto responsável por juntar os diferentes módulos que criamos, visando construir uma aventura interligada e coesa, introduzimos ao script controlador de fases novas variáveis e linhas de código que permitirão controlarmos o comportamento dos pacientes e do doutor durante a etapa inicial do fluxo de estados.
Para que tudo funcione corretamente, necessitaremos realizar algumas alterações na estrutura hierárquica dos GameObjects da cena e, também, nos valores de atributos de alguns componentes atrelados aos objetos dos personagens e de Tratanildo Doencita.
Iniciaremos nossas intervenções no projeto abrindo-o 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.
Inicialmente, na aba Hierarchy, selecione o objeto ControladorFase. Vamos dar uma olhada agora, via aba Inspector, em como se encontra o componente Controller Fase atrelado ao GameObject:
Note que muitas das variáveis listadas ainda não receberam valores. Ou seja, em diversos momentos, o script ainda não sabe quem deverá acionar para proceder com as atividades que planejamos para as etapas do game.
Vamos tratar, então, de criar e configurar as estruturas em cena para que o script possa realizar as ações a serem tomadas durante as fases de forma adequada. Iniciaremos nossa intervenção pelas novas câmeras, que deverão ser posicionadas de forma a mostrar o paciente chegando ao consultório, falando com o médico e se deslocando ao leito.
Mais câmeras
Na aba Hierarchy, selecione o objeto CameraLeito_01, subordinado a Cameras. Clique com o botão direito sobre o item e selecione a opção Duplicate:
Nomeie o novo GameObject criado como “CameraPosInicialPaciente”, sem as aspas. Selecione-o e modifique os valores dos atributos de seu componente Transform conforme indicado a seguir:
- Position X = -9.5, Y = 10, Z = 3;
- Rotation X = 20, Y = 90, Z = 0;
- Scale X, Y e Z = 1.
Na aba Hierarchy, volte a selecionar CameraLeito_01. Duplique-o, conceda o nome “CameraDialogo” ao novo objeto criado e os seguintes valores aos atributos de seu respectivo componente Transform:
- Position X = -7, Y = 8, Z = 4;
- Rotation X = 25, Y = 125, Z = 0;
- Scale X, Y e Z = 1.
Repita a operação, duplicando novamente CameraLeito_01, concedendo o nome “CameraPacienteIndoLeito” ao GameObject recém-surgido e os seguintes valores aos atributos de seu componente Transform:
- Position X = 15, Y = 7, Z = -3;
- Rotation X = 10, Y = -80, Z = 0;
- Scale X, Y e Z = 1.
Concluídas as inserções de novas câmeras no cenário, vamos introduzir e configurar adequadamente cópias do objeto que representa Doutor Tratanildo nas posições adequadas às cenas retratadas.
Mais médicos
Na aba Hierarchy, selecione o objeto DoutorVitoria, subordinado a Doutores, que, por sua vez, encontra-se subordinado a Personagens. Clique com o botão direito sobre o elemento e selecione a opção Duplicate.
Conceda o nome “DoutorConversa” ao novo GameObject. Ainda na aba Hierarchy, expanda a listagem de seus objetos subordinados, selecione CameraVitoria e delete-o.
Volte a selecionar DoutorConversa e, na aba Inspector, modifique o valor do atributo Controller de seu componente Animator para None (nenhum). Posteriormente, configuraremos a animação correspondente ao momento de conversa entre paciente e médico para esse GameObject.
Por fim, modifique os valores dos atributos de seu componente Transform conforme indicado a seguir:
- Position X, Y e Z = 0;
- Rotation X = 0, Y = 70, Z = 0;
- Scale X, Y e Z = 100.
Volte à aba Hierarchy e selecione novamente DoutorConversa. Clique com o botão direito sobre o objeto e duplique-o. O nome a ser concedido ao novo GameObject é “DoutorTratamento”; iremos posicioná-lo próximo ao totem de controle do maquinário do leito, concedendo os seguintes valores aos atributos de seu componente Transform:
- Position X = 10, Y = 0, Z = -11.5;
- Rotation X = 0, Y = 70, Z = 0;
- Scale X, Y e Z = 100.
Configuração do script controlador e dos objetos em cena
Para que os objetos representantes das câmeras e dos personagens posicionados no cenário sejam ativados nos momentos adequados pelo script controlador da fase, precisaremos desativar alguns GameObjects via editor, evitando a exibição acidental, por exemplo, de “dois Doutores Tratanildos” simultaneamente.
Na aba Hierarchy, selecione os objetos listados a seguir (utilize em conjunto o mouse e a tecla Control de seu teclado para facilitar a seleção):
- PacienteDeitado, subordinado a Leito (que se encontra subordinado a CenarioFixo);
- paciente_base, subordinado a Pacientes (que se encontra subordinado a Personagens);
- Todos os GameObjects subordinados a Doutores;
- Todos os objetos subordinados a Cameras, exceto CameraPosInicialPaciente;
- BarraInformacoesAcao, subordinado a Canvas.
Feita a seleção indicada, via aba Inspector, realize a desativação dos GameObjects, conforme ilustrado a seguir:
Por fim, via aba Hierarchy, selecione ControladorFase e conceda novos valores aos atributos de seu componente Controller Fase indicados na lista a seguir:
- Doutor Conversa: DoutorConversa;
- Doutor Tratamento: DoutorTratamento;
- Paciente Cenario: paciente_base;
- Paciente No Leito: PacienteDeitado;
- Cam Posicao Inicial Paciente: CameraPosInicialPaciente;
- Cam Dialogo Paciente Doutor: CameraDialogo;
- Cam Paciente Indo Ao Leito: CameraPacienteIndoLeito.
Feitas as alterações, 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
Dando sequência ao processo que iniciamos no encontro anterior, prosseguimos configurando o ambiente para que a aventura discorra o mais próximo possível do que planejamos no desenho do fluxo de estados.
Em nosso próximo encontro, continuaremos a configurar os elementos do cenário, o que permitirá, no futuro, que a etapa inicial do jogo ocorra adequadamente, permitindo a posterior livre exploração do consultório pelo jogador.
Nosso próximo texto já encontra-se disponível, continue conosco nessa jornada de conhecimento e fique ligado sempre aqui no GameBlast!
Revisão: Ives Boitano