Descripción general del nuevo sistema de entrada de Unity

El nuevo sistema de entrada en Unity proporciona un enfoque actualizado, flexible y más intuitivo para manejar las entradas en los juegos. Con este sistema, los desarrolladores pueden atender una variedad de dispositivos, desde controladores de juegos hasta teléfonos de realidad virtual, haciendo que el juego sea más dinámico e inmersivo.

1. Por qué el nuevo sistema

El sistema de entrada tradicional en Unity tenía capacidades limitadas y no era tan extensible. El Nuevo sistema de entrada ofrece una API unificada, que aborda limitaciones anteriores y proporciona funciones avanzadas para el desarrollo de juegos modernos.

2. Configuración

Para comenzar a utilizar el nuevo sistema de entrada, primero debe instalarlo desde el Administrador de paquetes en Unity. Una vez agregado, la transición desde el sistema anterior requiere ciertos ajustes en los scripts y la configuración.

3. Características clave

  • Acciones y enlaces: En lugar de hacer referencia directa a botones o teclas, los desarrolladores definen acciones y luego vinculan esas acciones a teclas o botones específicos.
  • Variabilidad del dispositivo: Admite fácilmente múltiples dispositivos, desde gamepads tradicionales hasta pantallas táctiles y dispositivos de realidad virtual.
  • Controles del jugador: Proporciona un mecanismo integrado para volver a vincular los controles, lo que permite a los jugadores configurar los controles como prefieran.
  • Manejo avanzado de eventos:Los eventos se pueden procesar de varias maneras, ya sea mediante encuestas o mediante devolución de llamadas, lo que otorga más control.

4. Crear una acción de entrada

Una acción de entrada es un nuevo tipo de activo que permite la definición de comportamientos de entrada sin tener que escribir scripts. Una vez creado, se puede incluir en un script, conectando el juego directamente con las entradas del jugador.

5. Implementación en scripting

  • El nuevo sistema de entrada se integra perfectamente con el entorno de secuencias de comandos Unity. En lugar de los métodos más antiguos 'Input.GetKey' o 'Input.GetAxis', este sistema utiliza "acciones" que se pueden invocar dentro de los scripts. Consulte el siguiente ejemplo:
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerMovement : MonoBehaviour
{
    public float speed = 5.0f;
    private Vector2 moveInput;

    public void OnMove(InputAction.CallbackContext context)
    {
        moveInput = context.ReadValue<Vector2>();
    }

    void Update()
    {
        Vector3 move = new Vector3(moveInput.x, 0, moveInput.y) * speed * Time.deltaTime;
        transform.Translate(move);
    }
}

Analicemos el ejemplo de código proporcionado arriba:

  • Espacios de nombres: El espacio de nombres 'UnityEngine.InputSystem' es esencial para poder utilizar las nuevas funcionalidades.
  • 'moveInput': Esta variable almacena los valores de entrada, que comúnmente representan entradas horizontales y verticales.
  • 'OnMove()': Definida como una función pública, 'OnMove' se puede vincular directamente a una acción de entrada en el editor Unity. El método utiliza 'InputAction.CallbackContext' para leer los valores de entrada y asignarlos a nuestra variable 'moveInput'.
  • 'Update()': En el método 'Update', los valores de entrada almacenados determinan la dirección del movimiento. La entrada se traduce a un vector 3D para el movimiento del personaje, teniendo en cuenta la velocidad definida y el Unity 'Time.deltaTime' para el movimiento independiente del fotograma.

Para que este script funcione, es importante vincular el método 'OnMove' a una acción de entrada a través del editor Unity. Esta conexión garantiza que cuando un jugador proporciona información (como mover un joystick o presionar las teclas de flecha), la acción correspondiente activa la función del script deseado.

Conclusión

El nuevo sistema de entrada en Unity es una evolución poderosa y necesaria, que se alinea con las necesidades del desarrollo de juegos moderno. Ofrece versatilidad, precisión y personalización del usuario, lo que hace que las interacciones del juego sean más atractivas y receptivas.