Hoje iremos continuar a realizar alguns reparos e, também, iniciaremos a preparação para construir a “segunda parte” de nosso game, esta que envolverá, dentre outros, a coleta de medicamentos pelo cenário para que o médico possa tratar adequadamente seus pacientes em Consultório do Dr. Tratanildo.
Caso seja a primeira vez que você acessa o conteúdo de nossa série, junte-se a nós em uma jornada de descobertas e muitos aprendizados sobre o maravilhoso mundo do desenvolvimento de jogos.
Mesmo se você nunca teve contato direto com outros conteúdos sobre criação de games, não se acanhe: a partir do primeiro texto de nossa série são apresentados conceitos básicos que envolvem, dentre outros, a instalação e configuração da ferramenta Unity em nossos computadores, a elaboração de cenários, posicionamento e configuração de elementos em cena, utilização de multimídias e a codificação de scripts controladores dos comportamentos de cada ente de uma fase, permitindo criarmos as regras de nossas aventuras da forma que desejarmos.
Aproveite, então, para utilizar as potencialidades que a ferramenta Unity nos oferece para concretizar a criação daquele jogo que você sempre sonhou em tornar realidade, mas, até o momento, não teve a oportunidade de fazê-lo. Juntos, iremos seguir passo-a-passo nesta caminhada rumo a novos conhecimentos!
Turbulência à vista
Desde que atrelamos o GameObject das câmeras ao objeto que representa nosso personagem principal, pudemos notar a presença de uma certa “turbulência” na imagem disponibilizada ao jogador quando movimentamos o objeto de doutor Tratanildo pelos diferentes cantos de seu consultório:
Este comportamento indesejado tem muito a ver com a animação que escolhemos utilizar para dar a nosso querido médico o poder de caminhar pelo seu ambiente de trabalho, pois, por padrão, durante a movimentação que ela acaba aplicando ao modelo do médico quando acionada, alguns parâmetros envolvendo rotação e posicionamento do personagem acabam sendo modificados.
Como realizamos a “subordinação” dos GameObjects CameraDoutor_externa e CameraDoutor_interna ao objeto Doutor_rindo, essas oscilações também acabam sendo transmitidas aos objetos que representam as câmeras.
Em relação ao posicionamento (modificações nos valores de Position do componente Transform de Doutor_rindo), essa alteração é bem-vinda, pois fará com que possamos acompanhar Tratanildo em seus deslocamentos dentro do consultório. Já em relação a eventuais modificações de rotação do objeto causadas pela animação, com exceção das que codificamos explicitamente via script ControllerMov_Tank, são perturbações que não desejamos que surjam.
Para iniciarmos as alterações necessárias, vamos abrir o projeto para edição via Unity Hub, clicando duas vezes sobre o item referente ao projeto Consultório do Dr. Tratanildo. Na interface inicial do editor do Unity, na aba Project, abra a pasta Assets, Scenes e, por fim, clique duas vezes no ícone da cena ConsultorioScene. Certifique-se de estar com a aba Scene em evidência na tela, conforme exemplificado pela imagem a seguir:
Na aba Project, vamos acessar as pastas Assets, Multimedia, 3D e, por fim, Animacoes. Dessa vez não iremos alterar parâmetros do controlador, mas sim da animação em si. Por isso, selecione o objeto de nome AnimCaminhando.
Na aba Inspector, selecione a opção Animation. Diversas opções para alteração de parâmetros da animação serão apresentadas na referida aba:
Role a aba Inspector para baixo até encontrar um conjunto de opções cujo título é Root Transform Rotation. Esse grupo de parâmetros controlará como o GameObject irá sofrer alterações nos valores de rotação de seu Transform por ação da animação.
O parâmetro deste grupo que iremos alterar hoje é o de nome Bake Into Pose. Em nosso caso concreto, este parâmetro, se ativado, indicará ao Unity que eventuais rotações causadas pela animação não deverão ser aplicadas ao parâmetro Rotation do componente Transform do objeto como um todo, ou seja, exatamente o comportamento que desejamos. Portanto, iremos ativar sua caixa de seleção:
Por fim, role a aba Inspector até o seu fim e clique sobre o botão Apply para salvar as alterações realizadas nas configurações da animação:
Note que, agora, a câmera não “chacoalha” mais quando o médico caminha pelo cenário. Muito melhor assim, não?
Preparações para os tratamentos
Em nosso cenário, deixamos a disposição de Doutor Tratanildo diversas pílulas cenográficas, posicionadas estrategicamente sobre prateleiras na cor azul fixadas nas paredes do consultório.
Durante a parte do jogo em que serão realizados os tratamentos de saúde, uma das tarefas que o médico terá de realizar para concluir suas missões é a coleta das pílulas de saúde corretas para cada tratamento. Para tal, deverá se deslocar até as prateleiras para pegar o medicamento correto para cada doença identificada.
Como forma de preparação prévia para este momento tão especial, vamos dar uma pausa na sequência de correções que estamos realizando em nossos últimos encontros para podermos posicionar elementos que permitirão a coleta adequada dos remédios pelo doutor.
Para tal, na aba Hierarchy, selecione o objeto Pilula_vermelha, subordinado a PilulasCenograficas que, por sua vez, é subordinado a CenarioFixo.
Na aba Inspector, adicione um componente do tipo Box Collider. Os valores a serem alterados para seus parâmetros são listados a seguir:
- Is Trigger: valor true (deixar selecionada sua caixa de seleção);
- Center X = 0, Y = 0, Z = -0.2;
- Size X = 0.3, Y = 1, Z = 0.6.
Já que criamos as pílulas como prefabs, vamos aproveitar sua potencialidade de replicação de características para inserirmos colisores também para as demais pílulas cenográficas do consultório.
Ainda com Pilula_vermelha selecionada, na aba Inspector, clique com o botão direito sobre o título do componente Box Collider e, no menu suspenso apresentado, selecione a opção Added Component e, por fim, Apply to Prefab ‘Pilula_vermelha’:
Note que, agora, todos os medicamentos no cenário apresentam colisores configurados, porém Pilula_roxa ainda precisa de ajustes em relação ao posicionamento de seu Box Collider:
Na aba Hierarchy, selecione o referido GameObject e, na aba Inspector, altere o valor do parâmetro Center Z de seu componente Box Collider para 0.2. Note que, agora, o colisor está posicionado corretamente.
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
Hoje, conseguimos corrigir mais um comportamento indesejado encontrado em nosso jogo e, também, pudemos dar início ao processo de configuração de um novo elemento de gameplay que terá relação direta com os remédios miraculosos que doutor Tratanildo irá utilizar em seus misteriosos tratamentos.
Em nossos próximos encontros, daremos sequência tanto às correções de comportamentos indesejados de nosso game quanto às novas implementações no projeto, que permitirão avançar na construção de nossa excêntrica aventura.
Nosso próximo encontro será no próximo dia 17 de novembro. Até mais! Fique sempre ligado nas novidades do GameBlast!
Revisão: Ives Boitano