Programando o Pulo
Last updated
Last updated
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#.
Abra o projeto que começamos na aula anterior;
Abra a cena SampleScene
;
Selecione o GameObject
do Dinossauro;
Vá até o Inspector
e clique no botão Add 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
, selecione Cre até > Folder
. Arraste o script Jogador
para dentro da pasta recém criada. (Isso irá nos ajudar na organização dos scripts).
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:
Note que o trecho copiado começa na linha 2
do arquivo e termina na linha 9
, logo antes da linha 10 que contém o trecho "files.exclude":
;
Aperte o atalho Ctrl + S
duas 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.
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.
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
Rigidbody
para que ele funcione. Mais informações sobre isso vá na sessão em que explicamos 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 o Update
60 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")
:
Volte para Unity, espere ela compilar o código e verificar se há algum erro. Aperte
Play
na 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
}
doUpdate
e antes da}
que fecha a classeJogador
, declare o métodoPular
, através da declaraçãovoid 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 pressionandoEnter
e adicione o comandopublic Rigidbody2D rb
:
Salve o código (
Ctrl + S
), certifique-se de que a bolinha branca ao lado do nomeJogador.cs
sumiu e volte para a Unity.Na aba
Hierarchy
, selecione oGameObject
doDinossauro
e, 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 oRigidbody2D
que foi atrelado a ele.
Salve a cena
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 o Rigidbody2D
do Dinossauro;
AddForce
: Método que adicionar força em uma direção
Vector2.up
: É o mesmo que declarar new 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 por Vector2.up
por uma força, para que consigamos modificar a intensidade do pulo.
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
Jogador
e, logo após a declaração doRigidbody2D
, declare o comandopublic float forcaPulo;
.Salve o script e volte para a Unity.
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 Pulo
para300
.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 Scale
para5
.
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 Pulo
doJogador (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.
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.