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.)
Desafio
FácilFaça o rover se mover com precisão, sem suavização.
- Em
Update(), leiafloat h = Input.GetAxisRaw("Horizontal");efloat v = Input.GetAxisRaw("Vertical");. - Adicione
new Vector3(h * speed * Time.deltaTime, 0, v * speed * Time.deltaTime)atransform.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
1Fundamentos de C# no Unity
Olá, UnityVariáveisDecimais precisam de um fTexto no ConsoleVariáveis que guardam valoresIf e ElseComparar númerosRevisão: Coletor de Moedas7Laços e Métodos
Repita com forLaços dentro de laçosEscreva um métodoMétodos que respondemArraysRevisão: Escada10Encontrando coisas
Buscar pelo nomeTagsBuscar por tipoReferências são melhores que FindO null do UnityRevisão: moeda mais próxima13Projeto: Desvie dos Blocos
O CorredorBlocos do Céu2Faça-o se mover
Posicione o cuboMova a cada quadroGire a cada segundoDirija com as teclasRecapitulando: dirija o cubo5Vetores
Somando vetoresDireçõesEspaço local e globalVelocidade diagonalDistância entre objetosVector3 é uma structRevisão: piloto de drone8GameObjects e Componentes
Referências no InspectorObter um componenteComponentes ausentesAdicionar um componenteRequireComponentMostrar e ocultarRevisão: Interruptor de luz6Transformações e hierarquia
Pais e filhosIçar a bandeiraEscalaOlhar para as coisasMover-se em direção a um pontoRevisão: Lua em órbita9Projeto: Pegue a Estrela
O PegadorUma Estrela CadentePratique por conta própria: Playground de Unity