Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos I / Aula
Vejamos, na Listagem 3, o código necessário para que o nosso pulo funcione como descrevemos anteriormente.
Listagem 3 - Adicionando o código de pulo ao nosso personagem.Código novo, funções novas, objetos novos, tudo novo de novo! Vamos então passar por cada novidade com calma e explicando direitinho.
Primeiramente, observemos que agora há duas variáveis booleanas, uma chamada jumping e a outra chamada grounded. A jumping será responsável por dizer se o personagem está tentando iniciar um pulo ou não, enquanto a grounded vai dizer se ele está no chão ou não. Como vemos no método Update(), o personagem só será capaz de iniciar um pulo (jumping = true) quando o botão de pulo estiver pressionado e ele estiver no chão.
A próxima alteração foi adicionar uma referência ao groundCheck, como um transform, uma vez que estamos apenas interessados em sua posição. Definimos também uma variável pública chamada layerMask. Essa variável armazenará qual a camada que será procurada pela nossa linha, quando a traçarmos. Não esqueça de definir o valor dessas variáveis no editor, uma vez que elas são públicas!
Por fim, definimos a variável jumpSpeed, a qual armazena, em ponto flutuante, o valor a ser utilizado como força para o pulo do nosso personagem.
Definidas as variáveis, adicionamos o código do pulo em si, tanto utilizando o Update quanto o FixedUpdate. Mais uma vez, as alterações no motor de física foram para o Fixed!
No método Update adicionamos um teste, executado a cada frame, relacionado à posição do personagem em relação ao chão. A variável booleana grounded que havíamos criado vai receber o resultado de um Linecast partindo da posição do próprio transform até a posição do groundCheck, buscando algum objeto da camada layerMask. Caso encontre, será retornado True, indicando que o objeto está presente e, consequentemente, estamos no chão. Caso contrário, estaremos no ar.
Definido se estamos no chão, verificaremos se o jogador pressionou o botão de pulo. Caso estejamos no chão e o botão de pulo esteja pressionado, pularemos. Perceba que utilizamos, para o botão de pulo, um eixo chamado "Jump", como havíamos estudado na Aula 03. Assim mantemos todas as facilidades que a utilização de um eixo nos traz!
Para finalizar, precisamos apenas adicionar o pulo em si! E aí, como estamos trabalhando com uma força e o motor de física, movemos isso para o método FixedUpdate(). Caso estejamos, de fato, pulando (as duas condições foram atendidas), adicionamos uma força vertical ao nosso RigidBody no valor de jumpSpeed e então dizemos que não estamos mais pulando (jumping = false).
Com isso, finalizamos o nosso script de pulo! Para que o personagem pule, falta apenas um detalhe: o groundCheck! Para que possamos utilizar a técnica descrita com o script demonstrado, precisamos criar o objeto groundCheck e defini-lo no script para que o Linecast funcione adequadamente.
Versão 5.3 - Todos os Direitos reservados