Menu
CoddyTech

Eixos

Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 20 de 85.

Input.GetAxis("Horizontal") transforma as setas para a esquerda e para a direita (e A e D) em um número de -1 a 1: -1 para a esquerda, 1 para a direita e 0 para nenhuma das duas. Input.GetAxis("Vertical") faz o mesmo com as setas para baixo e para cima (S e W). Uma chamada substitui dois ifs, e um analógico de controle usa os mesmos eixos sem código extra.

O número não muda de repente. Com as configurações padrão do Unity, ele se aproxima do valor desejado a uma taxa de 3 por segundo, então leva um terço de segundo para chegar a 1 depois de pressionar a tecla e mais um terço de segundo para voltar a 0 depois de soltá-la. Essa suavização faz com que este aerodeslizador acelere suavemente e deslize até parar:

public float speed = 5f;

void Update()
{
    float h = Input.GetAxis("Horizontal");
    transform.position += new Vector3(h * speed * Time.deltaTime, 0, 0);
}

Input.GetAxisRaw("Horizontal") ignora a suavização: o valor é exatamente -1, 0 ou 1 em cada quadro, então o movimento começa e para imediatamente. Use GetAxis para coisas que devem parecer pesadas e GetAxisRaw para controles precisos. Com as duas setas pressionadas, ambos retornam 0, porque as duas direções se anulam. (Em um projeto Unity 6, a configuração Active Input Handling mencionada em Controlar com as teclas também se aplica aos eixos.)

challenge icon

Desafio

Fácil

Faça o rover se mover com precisão, sem suavização.

  1. Em Update(), leia float h = Input.GetAxisRaw("Horizontal"); e float v = Input.GetAxisRaw("Vertical");.
  2. Adicione new Vector3(h * speed * Time.deltaTime, 0, v * speed * Time.deltaTime) a transform.position.

Pressione “Jogar”, clique no jogo e dirija com as setas ou WASD: o rover começa e para instantaneamente. Depois, pressione “Verificar”.

Experimente você mesmo

using UnityEngine;

public class Rover : MonoBehaviour
{
    public float speed = 4f;

    void Update()
    {
        // Horizontal controla o movimento ao longo de x, Vertical ao longo de z, sem suavização.
    }
}

Todas as lições de Fundamentos de Scripting no Unity

Pratique por conta própria: Playground de Unity