Alterando o Nosso Jogo para Conter o Pulo

Em uma de nossas primeiras aulas, estudamos os eixos e o modo como podemos controlar o personagem utilizando os valores obtidos por estes. Isso gerou o script de movimentação e controle do personagem que estamos utilizando até agora como nosso CharacterController. Esse script, no entanto, contém ainda algumas imperfeições e, por ter sido um dos nossos primeiros contatos com a linguagem, foi desenvolvido para ser simples e não eficiente.

Passadas algumas aulas, já temos alguma experiência e algum tempo de contato com a ferramenta, então, podemos nos aventurar em um melhor script de movimento, fazendo o personagem parecer mais um elemento de um jogo de plataforma como usualmente vemos. Para isso, vamos fazer algumas alterações em nosso script e aderir a algumas novas guidelines de programação.

Importante!

Quando trocamos uma técnica utilizada por outra, para abordar novos aspectos, não significa que a técnica anterior é inútil/errada. Nosso personagem, como está no momento, com controles horizontais e verticais, poderia ser um excelente exemplo para um jogo subaquático, por exemplo, no qual é possível se mover igualmente em todos os eixos. Bastaria tirar a gravidade!

Resumindo: Nunca esqueça qualquer uma das técnicas estudadas nas aulas anteriores, mesmo que elas sejam substituídas!

Removendo a Movimentação Livre no Eixo Y

Dito isso, começaremos as nossas alterações de movimentação do personagem removendo sua capacidade de voar. Agora, com o nosso novo script contendo pulos simples, o personagem estará sempre no chão, sujeito à gravidade, até que o pulo seja acionado. Também removeremos sua capacidade de forçar a descida, tirando, assim, completamente o controle sobre o eixo vertical, exceto pelo próprio pulo!

Outra mudança que faremos a partir de agora é começar a se acostumar com algo comum em qualquer ambiente de programação e, também, no mundo do desenvolvimento de jogos: a língua inglesa! A partir das listagens desta aula, utilizaremos, sempre que possível, nomes de funções e variáveis em Inglês, para vocês já se acostumarem e poderem se adaptar bem às situações reais que encontrarão. Viva Inglês Técnico I e II!

São tantas as alterações que é melhor criarmos um novo script, deixando o velho de lado. Para isso, delete o script antigo do seus Assets ou simplesmente o renomeie para algo a não ser mais utilizado. Cuidado para não se confundir após renomear, hein! Criaremos um novo script C# chamado PlayerController, atrelado ao player, onde iniciaremos a criação do nosso novo código de movimentação.

O primeiro aspecto a fazer é adicionar novamente a movimentação horizontal, a qual já estava funcionando de maneira adequada. Para isso, precisaremos, ainda, da referência ao RigidBody2D, da velocidade com a qual o jogador acelerará e, então, poderemos capturar os inputs e traduzi-los em comandos para o motor de física. Vejamos a Listagem 1 para entender melhor esses primeiros passos.

Listagem 1 - Código para o movimento inicial do personagem.

Parou! Parou! Função nova no pedaço! O que é esse tal de Awake, professor?

A função Awake, assim como a função Start, é utilizada para a inicialização de valores nos objetos. Ela também é um callback, mas é chamada em um momento diferente da inicialização! A função Awake é invocada antes mesmo de o jogo começar! E, com isso, você pode definir tudo que é necessário "já estar pronto" quando o jogo for iniciado. Ou seja, podemos utilizar a Awake objetivando, de fato, inicializar os nossos objetos, e a Start, vista anteriormente, em um momento seguinte, quando tudo já estiver quase pronto. Isso pode ser útil, por exemplo, para inicializar valores no Awake e, quando necessário utilizar no Start, para eles estarem prontos. Simples! Não criemos pânico.

Versão 5.3 - Todos os Direitos reservados