Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos II / Aula

arrow_back Aula 02 - Entradas do jogador e movimento

Adicionando movimento em um objeto - pt.6

Tudo certo agora! Vamos utilizar esse valor para mover a esfera para direita/esquerda de acordo com o desejo do jogador.

Para o jogo e dê um duplo clique novamente para abrir o script no editor. No método Debug(), logo abaixo do comando Debug.Log adicione o seguinte:

AخA
1
Vector3 mover = new Vector3 (movimentoHorizontal, 0f, 0f);
2
transform.Translate (mover);

Esses dois comandos são bem simples. Inicialmente criamos uma nova variável do tipo Vector3 para representar o quanto desejamos mover a esfera a cada frame. Usamos um Vector3 pois, como estamos em três dimensões, os movimentos podem acontecer em todas as três direções ao mesmo tempo e cada componente do Vector3 (x, y e z) deve guardar o quanto desejamos mover o objeto em cada uma das direções. Repare que inicializamos o Vector3 chamado “mover” com os valores x = movimentoHorizontal, y = 0f e z = 0f. Dessa forma, garantimos que o valor movimentoHorizontal afetará somente o eixo X.

O comando transform.Translate(mover); utiliza, para alterar a posição atual da esfera, o Vector3 criado anteriormente. Todo script associado a um objeto visível no Unity tem uma variável chamada “transform”, a qual provê diversos tipos de operações que modificam sua posição, rotação e escala. Estamos utilizando o método Translate que recebe um Vector3 e move o objeto nas direções x, y e z na quantidade indicada nos valores das componentes do Vector3.

Agora, faremos o mesmo para o eixo Vertical e modificaremos a criação do Vector3 “mover” a fim de utilizar o valor desse eixo para a componente Z. No Unity, o componente X representa as laterais, e Z representa as direções para frente e para trás. O componente Y é para cima e para baixo, e não queremos mover o objeto nessas direções por enquanto. O seu código final do método Update() deve ficar assim:

x
1
void Update () {
2
    float movimentoHorizontal = Input.GetAxis ("Horizontal");
3
    Debug.Log ("Valor horizontal: " + movimentoHorizontal.ToString ());
4
5
    float movimentoVertical = Input.GetAxis ("Vertical");
6
    Debug.Log ("Valor vertical: " + movimentoHorizontal.ToString ());
7
8
    Vector3 mover = new Vector3 (movimentoHorizontal, 0f, movimentoVertical);
9
    transform.Translate (mover);
10
}

Na Figura 19 você pode ver como ficou o código completo do script no Editor.

Figura 19 - Código do script de movimento no editor.
Código do script de movimento no editor.
Fonte: Captura de tela do Unity.https://unity3d.com/pt/. Acesso em: 24 de fev de 2017.

Finalizamos a primeira parte de nossos estudos sobre as entradas do usuário e movimento, tudo bem até aqui? Você deve ter notado que vários aspectos ainda não estão ideais, como a velocidade do movimento, a falta de reação física da esfera, a câmera travada a qual eventualmente faz o objeto controlado sair do campo de visão, etc. Não se preocupe, pois retomaremos esses tópicos na próxima aula e realizaremos vários ajustes. Aguenta firme, ainda temos muito a aprender! Espero que tenham gostado! ;)

Versão 5.3 - Todos os Direitos reservados