Menu
CoddyTech

Ejes

Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 13 de 67.

Input.GetAxis("Horizontal") convierte las flechas izquierda y derecha (y A y D) en un número de -1 a 1: -1 para la izquierda, 1 para la derecha y 0 para ninguna. Input.GetAxis("Vertical") hace lo mismo con las flechas abajo y arriba (S y W). Una llamada reemplaza dos if, y un joystick de mando controla los mismos ejes sin código adicional.

El número no da un salto. Con los ajustes predeterminados de Unity, se mueve hacia su objetivo a 3 por segundo, así que tarda un tercio de segundo en llegar a 1 después de pulsar y otro tercio en volver a 0 después de soltar. Esa suavización hace que este aerodeslizador acelere suavemente y se deslice hasta detenerse:

public float speed = 5f;

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

Input.GetAxisRaw("Horizontal") omite la suavización: devuelve exactamente -1, 0 o 1 en cada fotograma, así que el movimiento empieza y se detiene de inmediato. Usa GetAxis para acciones que deberían sentirse pesadas y GetAxisRaw para controles precisos. Si mantienes pulsadas ambas flechas, cualquiera de las dos funciones devuelve 0, porque las dos direcciones se cancelan. (En un proyecto de Unity 6, el ajuste Active Input Handling de Steer with the Keys también se aplica a los ejes.)

challenge icon

Desafío

Fácil

El rover debe responder con precisión, sin aceleración gradual: las flechas (o WASD) lo desplazan a speed unidades por segundo, a izquierda y derecha a lo largo de x, y hacia arriba y hacia abajo a lo largo de z. Se mueve a toda velocidad desde el momento en que se pulsa una tecla y se detiene en cuanto se suelta.

Pulsa Play, haz clic en el juego y conduce; después pulsa Check.

Pruébalo tú mismo

using UnityEngine;

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

    void Update()
    {
        // Horizontal desplaza a lo largo de x, Vertical a lo largo de z, sin suavizado.
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos de scripting en Unity