Leyendo al jugador (teclado y gamepad)
Clase 18 de 24 • Curso de Introducción a Unity: Scripting
Resumen
¿Cómo los jugadores interactúan con el mundo del juego?
El mundo del juego nos ofrece un sinnúmero de experiencias inmersivas mediante simples mecanismos de control, como las direcciones del gamepad: arriba, abajo, izquierda y derecha. Estos controles, a menudo subestimados, nos transportan a realidades medievales, epopeyas post-apocalípticas o aventuras de carreras. En el contexto de programación de videojuegos con Unity, estas direcciones son esenciales para generar movimiento dentro de la escena, como veremos al mover un cubo.
¿Cómo mover un cubo en Unity?
Para mover un cubo en Unity, comenzamos con un script llamado Movimiento Tercera Persona. Este script se encarga de trasladar al cubo según las direcciones horizontales y verticales. Las claves para estos movimientos son:
- Vectores Direccionales Globales: La dirección "derecha" usa un vector global que, combinado con las actualizaciones en tiempo real, determina la posición del cubo.
- Multiplicación por Números Negativos: Un número negativo voltea el vector, permitiendo mover el cubo hacia atrás o hacia la izquierda.
El objetivo es mantener las direcciones restringidas entre -1 y 1, de manera que el cubo no exceda la velocidad deseada. Además, emplear time.deltaTime
asegura que el movimiento sea independiente del frame rate del dispositivo.
float directionHorizontal = Input.GetAxis("Horizontal");
float directionVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(directionHorizontal, 0, directionVertical);
transform.Translate(movement * speed * Time.deltaTime, Space.World);
¿Cómo conectar el gamepad y el teclado?
A veces nos encontramos sin un gamepad para realizar pruebas en Unity. Sin embargo, lo que muchas personas pasan por alto es que Unity ofrece Input.getAxis para interpretar tanto gamepads como teclados. El nombre del eje que proporciona esta función es fundamental, como 'Horizontal' y 'Vertical', para detectar movimientos en las direcciones correspondientes. Es importante recordar que la lectura de estos ejes también captura la interacción con el teclado WASD, brindando versatilidad al control del usuario.
¿Cómo utilizamos el movimiento del mouse?
El mouse es un vital complemento en los controles del juego. Puede utilizarse para capturar información de movimiento y rotar la cámara dentro del juego. Al igual que con el gamepad y el teclado, estos movimientos del mouse son ejes detectables.
Para capturar el movimiento del mouse:
- Crear un script llamado Movimiento con Mouse e inicializar las siguientes variables:
float mouseX;
float mouseY;
- En el método
Update
, asigna valores utilizandoInput.GetAxis
, asegurándose de referirse a los ejes correctos.
mouseX = Input.GetAxis("Mouse X");
mouseY = Input.GetAxis("Mouse Y");
- Usar estos valores para rotar la cámara con
transform.Rotate
.
transform.Rotate(mouseY, mouseX, 0);
¿Cómo se maneja la interacción con los botones del mouse?
Además del movimiento, los clicks del mouse también se pueden detectar e integrar como inputs del juego:
- GetMouseButton: Detecta si un botón está presionado.
- Diferentes valores indican clicks izquierdo, medio y derecho.
if (Input.GetMouseButton(0))
{
transform.Translate(Vector3.forward * speed * Time.deltaTime);
}
¿Dónde aprender más sobre el sistema de inputs?
Unity ofrece documentación exhaustiva sobre su sistema de inputs, especialmente sobre el manejo de gamepads variados. Mientras que el nuevo sistema de inputs podría parecer complicado al configurarse, ofrece control masivo sobre cómo los jugadores interactúan con el juego usando diferentes dispositivos.
Al explorar la documentación del nuevo sistema de inputs de Unity, puede descubrir cómo manejar cualquier tipo de gamepad con controles normalizados. Este sistema es esencial para desarrolladores que buscan expandir los límites de la jugabilidad.
Y claro, ¡la práctica hace al maestro! Te animo a seguir experimentando y profundizando en esta fascinante área de desarrollo de videojuegos.