Programando o Pulo
Agora é hora de abrir o editor de códigos e começar a entender como construir o pulo do personagem, utilizando a linguagem de programação C#.
Criação do Script
Abra o projeto que começamos na aula anterior;
Abra a cena
SampleScene;Selecione o
GameObjectdo Dinossauro;Vá até o
Inspectore clique no botãoAdd Component;Digite o nome do script, no caso será
Jogador(certifique-se de que o nome começa com letra maiúscula);Após a criação do script, clique com o botão direto na pasta
Assets, selecioneCre até > Folder. Arraste o scriptJogadorpara dentro da pasta recém criada. (Isso irá nos ajudar na organização dos scripts).
Configurando o Visual Studio Code
Abra o
Visual Studio Code;Abra o arquivo
settings.json, localizado dentro da pasta.vscode;Logo após a primeira linha do arquivo, que contém uma chave
{, cole o seguinte trecho:
"editor.formatOnSave": true,
"editor.formatOnType": true,
"editor.formatOnPaste": true,
"explorer.confirmDelete": false,
"explorer.confirmDragAndDrop": false,
"files.insertFinalNewline": true,
"files.trimFinalNewlines": true,
"files.trimTrailingWhitespace": true,Note que o trecho copiado começa na
linha 2do arquivo e termina nalinha 9, logo antes da linha 10 que contém o trecho"files.exclude":;
Aperte o atalho
Ctrl + Sduas vezes. Uma delas será para salvar as alterações. E a segunda para ativar uma das configurações ("editor.formatOnSave": true,), que ajusta a formatação sempre que o arquivo é salvo.
Programando o Pulo
O primeiro passo para começarmos o nosso jogo é a construção do comportamento do pulo do dinossauro. Sempre que o jogador pressionar a tecla seta para cima, ou UpArrow, iremos fazer com que o dinossauro receba uma força na direção para cima, simulando o comportamento de pulo.
Código completo
Explicaremos o passo a passo para construir o código do pulo, porém, caso queira testar a implementação, você pode usar o código completo, disponível a seguir.
Caso use o código completo, você deverá atribuir a referência do
Rigidbodypara que ele funcione. Mais informações sobre isso vá na sessão em que explicamos o código.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Jogador : MonoBehaviour
{
public Rigidbody2D rb;
public float forcaPulo = 700;
// Start is called before the first frame Update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
Pular();
}
}
void Pular()
{
rb.AddForce(Vector2.up * forcaPulo);
}
}Explicando o código
Ainda no Visual Studio Code, abra o arquivo
Jogador.cs, localizado dentro da pastaScripts.
Agora iremos iniciar a configuração do pulo, mas para isso, é preciso entender duas funções:
A primeira delas é o
Start, que é executado sempre que o jogo começa, sendo chamado uma vez para cada objeto que tenha um script.A segunda é o
Update, que é executar uma vez por quadro. Pense em um jogo de 60 FPS (60 quadros por segundo), a Unity irá executar oUpdate60 vezes por segundo.
Portanto, se quisermos checar sempre que uma tecla for pressionada, devemos fazer isso no Update, visto que essa ação precisa ser validada sempre, pois não sabemos quando o jogador a pressionará.
Utilizaremos um if, que recebe uma condição booleana e, sempre que essa condição for true, ele executa o trecho de código dentro das chaves {}.
Dentro dos parênteses do if, o comando que detecta se o jogador pressionou uma tecla é o Input.GetKeyDown(), recebendo qual o KeyCode da tecla que será validada, portanto, receberá KeyCode.UpArrow.
Para validar se o if está sendo executado corretamente, exibiremos a mensagem "Pular" no console, utilizando a declaração Debug.Log("Pular"):
void Update()
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
Debug.Log("Pular");
}
}Volte para Unity, espere ela compilar o código e verificar se há algum erro. Aperte
Playna cena e, quando o jogo iniciar, aperte aseta para cima. Verifique se a mensagem"Pular"aparece no Console.
Volte para o Visual Studio Code e apague a linha
Debug.Log("Pular")e substitua porPular(). Uma mensagem de erro irá aparecer, dizendo queO nome "Pular" não existe no contexto atual, pois ainda não declaramos no código o que o métodoPular()significa.
Depois da
}doUpdatee antes da}que fecha a classeJogador, declare o métodoPular, através da declaraçãovoid Pular() {}:
using UnityEngine;
public class Jogador : MonoBehaviour
{
void Update()
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
Pular();
}
}
void Pular()
{
}
}Para adicionar uma força que empurre o objeto para cima, precisamos ter acesso ao componente de física que está no dino, o Rigidbody. Para isso, precisamos declarar uma propriedade public fora dos métodos Update e Pular que criamos, mas dentro da classe Jogador. Dessa forma, a Unity mostrará essa informação no Inspector, para que a gente possa realizar a conexão.
Após a
{da classeJogador(na linha 6), crie duas linhas pressionandoEntere adicione o comandopublic Rigidbody2D rb:
public class Jogador : MonoBehaviour
{
public Rigidbody2D rb;
// ...
}Salve o código (
Ctrl + S), certifique-se de que a bolinha branca ao lado do nomeJogador.cssumiu e volte para a Unity.Na aba
Hierarchy, selecione oGameObjectdoDinossauroe, na guiaInspector, procure pelo componenteJogador (Script), verificando se apareceu a variávelrb. Caso não tenha aparecido, verifique se o console exibiu algum erro e confira se o seu código está correto.
Em seguida, clique no
Dinossauro, segure e arraste atéNone (Rigidbody 2D). Com isso, o script irá reconhecer oRigidbody2Dque foi atrelado a ele.
Salve a cena
Adicionando Força ao Pulo
Com a referência do Rigidbody2D do Dinossauro feita, podemos usar a variável rb para adicionar uma força para cima, dando a sensação de que o GameObject está pulando.
Volte para o script do
Jogador, no Visual Studio Code, e, dentro do métodoPular() {}, adicione o comandorb.AddForce(Vector2.up * forcaPulo).
rb: Acessar oRigidbody2Ddo Dinossauro;AddForce: Método que adicionar força em uma direçãoVector2.up: É o mesmo que declararnew Vector2(0, 1), ou seja:Neutro no eixo X, representando sem movimentação horizontal (para os lados);
Positivo no eixo Y, representando movimentação vertical para cima.
* forcaPulo: Multiplicamos a direção do movimento representada porVector2.uppor uma força, para que consigamos modificar a intensidade do pulo.
void Pular()
{
rb.AddForce(Vector2.up * forcaPulo);
}Note que o Visual Studio Code não reconhece a variável forcaPulo, pois devemos declará-la no começo da classe, para que consigamos alterar pelo Inspector da Unity.
Para controlar a intensidade do pulo na variável forcaPulo, utilizaremos o tipo float, que permite a inserção de números com casas decimais.
Vá no começo da classe
Jogadore, logo após a declaração doRigidbody2D, declare o comandopublic float forcaPulo;.Salve o script e volte para a Unity.
public class Jogador : MonoBehaviour
{
public Rigidbody2D rb;
public float forcaPulo = 700;
// ...
}Configurando a Força e a Gravidade
Na aba
Hierarchy, selecioneDinossauro.Na aba
Inspector, desça até oJogador (Script)e verifique se apareceu a variávelForca Pulo.Altere o valor de
Forca Pulopara300.Caso não tenha aparecido, verifique se salvou o código no Visual Studio Code ou se há algum erro no console.
Note que o dinossauro ainda está demorando muito para cair. Isso ocorre pois a gravidade do Dinossauro ainda está muito baixa, precisamos aumentá-la.
Na aba
Inspector, vá até o componenteRigidbody 2D, e altere o valor deGravity Scalepara5.
Ao realizar essa alteração, note que a força que estávamos aplicando ao pulo não é mais suficiente para fazer com que o dinossauro chegue na mesma altura. Isso ocorre pois a força que a gravidade está exercendo é cinco vezes maior que antes. Para corrigirmos isso, basta aumentar o valor da força do pulo para algo que ache interessante.
Altere o valor da variável
Forca PulodoJogador (Script)para800, ou algo que ache interessante.
É importante verificar se as alterações foram feitas com o Play acionado. Caso esteja, será necessário sair do Play e alterar Forca Pulo e Gravity Scale novamente, pois ao sair do Play, todas as modificações são desfeitas.
Concluindo
Salve a cena e faça os últimos testes para garantir que tudo está funcionando como esperado.
Agora que o código do pulo está pronto, suba as modificações no GitHub através de um Commit e um Push, para que elas fiquem salvas na nuvem.
Last updated
Was this helpful?