Unity 2021: El nuevo Sistema Input (New Input System): Parte 2

Esta es la segunda parte de nuestros blogs acerca del new Input System (NIS) en esta parte profundizaremos más en cómo usar de manera adecuada el NIS y daremos un ejemplo de como programar los movimientos de tu personaje 2D.

Si no has leído nuestro blog anterior donde te explicamos cómo instalar y como hacer que el NIS responda a nuestros comandos vía script, ve a nuestro blog y revísalo antes de empezar.

Contenido

1.¿Cuáles son los tipos de acción?

2. ¿Qué hace Unity cuando oprimimos un botón?

3. Qué Tipo de interacciones tiene el NIS

4. Ahora sí vamos a programar el movimiento de un objeto 2D

1.¿Cuáles son los tipos de acción?

En la sección “Properties”, existen 3 tipos de acciones que Unity procesa por cada control, que son las siguientes:

  • Value: Es el tipo determinado por default, en este el sistema estará pendiente de cualquier cambio que se realice y en caso de que más de un control tenga la misma acción determinará cuál es el que debe producir la acción (desambiguación).
  • Button: Similar a “Value” pero se usa cuando un solo botón activa una acción, no revisará qué controles pueden activar la acción.
  • Pass-through: En este caso cualquier control activará la acción determinada.

2. ¿Qué hace unity cuando oprimimos un botón?

Cada vez que oprimimos un botón Unity generará 3 operaciones las cuales son “Started”, “Performed” y “Canceled”, que significan lo siguiente:

  • Started: Estás operación indica el frame en el que se empezó a oprimir el botón 
  • Performed: Indica cuando la interacción está completa, lo cual depende del tipo de interacción que se le haya asignado al botón
  • Canceled: Se producira en el momento en el que soltamos el botón, puede ser antes de que se produzca el “Performed”.

Teniendo esto en cuenta debes configurar de manera adecuada en que momento quieres que se lleve la acción por parte de tu personaje para esto sirven las interacciones.

3.Tipo de interacciones en el NIS

No siempre vamos a necesitar que una acción se ejecute inmediatamente al oprimir un botón, en ocasiones necesitamos que se active la acción después de un tiempo durante el cual se oprime determinado botón. Para ello existen diferentes tipos de interacciones que pueden ser utilizadas con el NIS.

  • Default: el utilizado si no especificamos ninguna otra interacción, en esta se llamarán las operaciones “Started” y “Perfomed” de manera casi simultánea, y “Cancelled” al soltar el botón, por lo que verás tres llamadas en la consola cada vez que oprimas y sueltes el botón.
  • Press: Para interacciones de tipo botón. Utiliza el parámetro de comportamiento para seleccionar si la interacción debe activarse al presionar el botón, soltarlo o ambos.
  • Hold: Requiere que oprimas el botón una determinada cantidad de tiempo antes de activar la acción.
  • Tap: Requiere que oprimas y liberes el botón en una determinada cantidad de tiempo para activar la acción. 
  • SlowTap: Requiere que mantengas presionado un Control durante un mínimo de tiempo y luego lo sueltes para activar la Acción.
  • MultiTap: requiere que el usuario presione y suelte un Control dentro de un tiempo especificado una cantidad de veces, sin que pase más de un tiempo determinado entre toques, para que la Interacción se dispare. En otras palabras, si quieres hacer un combo de ataques esta es la mejor interacción para eso. 

4. Ahora sí vamos a programar el movimiento de un objeto 2D

En la imagen de arriba puedes ver como debe quedar la configuración del “InputActionsAsset” para un personaje 2D.

Lo primero será dar doble click en tu “InputActionsAsset” ir a la sección “Actions” dar click en la cruz y cambiarle el nombre a la nueva acción por “Movement”.

Ahora en la sección “properties” ve al “Action type” y selecciona “Pass Through” 

Ahora en la misma sección ve a “Control Type” y selecciona “Vector2”

El siguiente paso es ir a la sección “Actions” en nuestro acción llamada “Movement” y le damos click en la cruz en “add 2D Vector composite”

Para finalizar esta parte seleccionamos por cada opción de Up, Down, Left, Right una tecla de WASD

Ahora si puedes volver a la imagen de cómo debería quedar todo

Ya casi terminamos ahora agrega las siguientes líneas a tu script “InputPlayer”

Lo que hicimos fue:

  • Creamos 3 variables privadas denominadas: horizontal, vertical y speed
  • Creamos una variable para capturar el Rigidbody2D y lo convocamos en el Awake().
  • Luego en el método SetVelocity() definimos las variables horizontal y vertical
  • En el método Movement() hacemos el llamado a nuestra acción “Movement” y utilizando el método SetVelocity() terminamos de definir las variable de horizontal y vertical
  • Para finalizar en FixedUpdate() utilizando el Rigidbody su propiedad velocity definimos cómo se moverá el jugador según las variables de horizontal, vertical y speed.

Para terminar, ve a Unity y en tu objeto “player” agrega el componente Rigidbody2D y acuérdate ajustar los eventos del componente “Player Input”

Ahora a mover tu objeto entra en “playmode” y verifícalo, si lo percibes muy lento aumenta la variable “speed”. Espero que este blog te haya ayudado.

Como siempre muchas gracias por leer nuestros blogs!!
Si te ha resultado útil este blog déjanos un comentario y síguenos en nuestro Instagram @tortugamedev y Twitter @Totuas2.
Y no olvides revisar nuestro otros blogs acerca del desarrollo de videojuegos, ni tampoco revisar nuestros juegos!!

Leave a Comment

Your email address will not be published.