EJERCICIO10_Inputs

En este ejercicio mostraremos cómo acceder a la ventana de propiedades del proyecto, y veremos en concreto las propiedades relativas a los “Inputs” o entradas.

Verás la manera que tiene Unity de definir los parámetros que recogerán la información que se introducirá empleando joysticks, botones, teclados, ratones, etc.

También realizarás un script básico para mover un objeto mediante pulsaciones de teclas.

EJERCICIO10_Inputs

Abrimos de nuevo la habitación hecha en el ejercicio anterior y añadimos dos objetos que conformoran el proyecto la pizarra y el cubo

Creamos dos cubos que estén superpuestos que harán uno de pizarra y el otro de marco.
Arrastraremos la textura pizarra menú a nuestro objeto principal mientras que el marco
tendrá asignado el material de Madera 3

EJERCICIO10_Inputs

Cuando hablamos de videojuegos o muchas aplicaciones, normalmente un usuario
debe de tener la posibilidad de interactuar con el videojuego

EJERCICIO10_Inputs

Para ello existen una serie de botones o controles que nos servirán para que haya esa comunicación entre ambas partes a través de elementos programados.
Crearemos un Script donde asignaremos los inputs correspondientes para la realización
del ejercicio.

NOTA

Inputs dónde definimos todos los diferentes controles de input(entrada) y acciones de
juego para su proyecto.

Todos los controles que configuremos en el Administrador de Input sirven para dos
propósitos:

Nos permite referenciar sus inputs por nombre de los controles en el scripting
Nos permite a los jugadores de su juego personalizar los controles a sus gustos

Todos los controles definidos serán presentados al jugador en el inicio del juego, dónde
verán su nombre, descripción detallada, y botones predeterminados. Desde aquí, ellos
tendrán la opción de cambiar cualquiera de los botones definidos en los ejes. Por lo tanto, es mejor escribir sus scripts haciendo uso de ejes en vez de botones individuales, ya que el jugador querrá personalizar los botones de su juego.

Abrimos la pestaña de Edit > Projects Settings > Inputs
Se nos abrirá en la pestaña de Inspector los diferentes inputs o entradas que nos permiten llamar a botones tanto del mouse como del teclado que usaremos para conformar los mandos de nuestros personajes en el videojuego:

EJERCICIO10_Inputs

Se pueden crear botones y ejes virtuales en el Input Manager, y los usuarios finales pueden configurar su input de teclado en un dialogo de configuración bonito en la pantalla.

Se utilizará uno de los elementos ya definidos como ejemplo, para describir las propiedades que permitirán crear inputs personalizados. Para la creación de un nuevo eje, bastará con aumentar el número de elementos en 1 (propiedad Size), creándose un duplicado del ultimo eje de la lista, que nos permitirán definir una entrada personalizada para el manejo de un personaje en el videojuego y poder referenciar un input a través del nombre del eje para acceder a él mediante un script.

En la siguiente imagen se muestran las propiedades disponibles para la configuración personalizada de las acciones del juego:

EJERCICIO10_Inputs

Name
Nombre del eje para su acceso desde un script.
Descriptive Name
Nombre que se mostrará al usuario para la configuración.
Descriptive Negative Name
Nombre para el botón negativo que se mostrará al usuario para la configuración.
Negative Button
Botón para el movimiento del eje en sentido negativo.
Positive Button
Botón para el movimiento del eje en sentido positivo.
Alt Negative Button
Botón alternativo para el movimiento del eje en sentido negativo.
Alt Positive Button
Botón alternativo para el movimiento del eje en sentido positivo.

Gravity

Valor que permite establecer la velocidad en unidades por segundo de caída del eje hacia una posición neutra, al no pulsar ningún botón (velocidad de centrado del input).

Dead

Valor que define el tamaño de la zona muerta análoga (rango de valores que al modificar el valor de entrada, no se apreciarán cambios observables en el valor de salida), estableciendo un rango para la posición neutral. Cualquier valor menor que este número se registrará como 0.

Sensitivity

Establece la velocidad en unidades por segundo para controlar el movimiento del eje hacia la posición de destino (sólo para dispositivos digitales). Por ejemplo en un teclado, un valor mayor implica una respuesta más rápida.

Snap

Al activar esta propiedad, permite el reseteo del eje y establecer su valor en cero, al recibir una entrada en dirección opuesta (sólo disponible para entradas de ratón y teclado). Como ejem­plo, si nos encontramos manejando un personaje pulsando la tecla up, y a continuación se pulsa la tecla down, el valor del eje se establecerá a cero, deteniendo el movimiento del perso­naje.

Invert

Invertirá los valores negativos a positivos y viceversa.

Type

Tipo de input que controlará el eje. Los valores que pueden establecerse son del tipo Key or Mouse Button, para cualquier botón, movimiento de ratón o rueda de desplazamiento, Mou- se Movement, para el movimiento sólo del ratón, y Joystick Axis, para los ejes analógicos del joystick.

Axis

Eje de entrada del dispositivo (ratón, joystick, gamepad etc.).

Joy Num

Joystick que será utilizado. Si se establece con el valor “Get Motion from all Joysticks”, toma­rá todas las entradas de Joystick (sólo reconocerá como entradas los ejes y no los botones).

Virtual Axes (Ejes Virtuales)

EJERCICIO10_Inputs

Desde los scripts, todos los ejes virtuales son accedidos por su nombre. Cada proyecto tiene el siguiente eje input por defecto cuando es creado:

Horizontal y Vertical son asignados a las teclas w, a, s, d y las teclas de flecha.

Fire1, Fire2, Fire3 están asignadas a los botones del ratón, derecho, central e izquierdo

Mouse X y Mouse Y están asignados al movimiento delta del mouse. Jump está asignado a la tecla de espacio de nuestro teclado

Usando Ejes de Input (Input Axes) desde los Scripts Puede consultar el estado actual de un script de esta manera:

value = Input.GetAxis («Horizontal»);

Este es el caso del Joystick input y el input del teclado.

No obstante, el delta del mouse(Mouse Delta) y el delta del movimiento de la ventana(Win- dow Shake Delta) son cuánto el mouse o la ventana se movió durante el último cuadro. Esto significa que puede ser mayor que 1 o menor que -1 cuando el usuario mueve el mouse rápi­damente.

Es posible crear ejes múltiples con el mismo nombre. Cuando obtenga el input del eje, el eje con el mayor valor absoluto va a ser devuelto. Esto hace que sea posible asignar más de un dispositivo input al nombre de un eje. Por ejemplo, cree un eje para un input de teclado y un eje para un input de joystick con el mismo nombre. Si el usuario está usando el joystick, el input vendrá del joystick, de otra manera el input vendrá del teclado. De esta forma, usted no tendrá que considerar de dónde el input viene cuando escriba scripts.

Nombres de Botones

Para mapear una tecla a un eje, usted necesita ingresar el nombre de la tecla en la propiedad Positive Button o Negative Button en el Inspector.

TECLAS

Los nombres de la tecla siguen esta convención:

Teclas normales: “a”, “b”, “c” …

Teclas numéricas: “1”, “2”, “3”, …

Teclas de flecha: “Arriba”, “abajo”, “izquierda”, “derecha”

Las teclas de teclado: “[1]”, “[2]”, “[3]”, “[+]”, “[equals]”

Teclas de modificación: “Derecha shift”, “Izquierda shift”, “Derecha ctrl”, “Izquierda ctrl”, “Derecha alt”, “Izquierda alt”, “Derecha cmd”, “Izquierda cmd”

Botones del mouse: “mouse 0”, “mouse 1”, “mouse 2”, …

Botones del Joystick (desde cualquier joystick): “joystick botón 0”, “joystick botón 1”, “joys­tick botón 2”, …

Botones del Joystick (Desde un joystick específico): “joystick 1 botón 0”, “joystick 1 botón 1”, “joystick 2 botón 0”, …

Teclas especial: “backspace”, “tab”, “return”, “escape”, “space”, “delete”, “enter”, “insert”, “home”, “end”, “page up”, “page down”

Teclas funcionales: “f1”, “f2”, “f3”, …

Los nombres utilizados para identificar las teclas son los mismo de la interfaz del scripting y el Inspector.

Una vez abierto el input vamos a escribir el código correspondiente para poder programar el input del botón izquierdo del ratón (Firel) que hará que cada vez que cliquemos nuestro cubo avance dentro del mapa.

Para ello nos venimos al script que hemos creado con el nombre de Entradas y escribimos lo siguiente:

 

EJERCICIO10_Inputs

Elegimos el método GetButtonDown que viene a decirnos que siempre y cuando que
cliquemos con el botón izquierdo del ratón, Fire1, nuestro cubo se desplazará 1 en el eje
de las X

Guardamos los cambios hechos en nuestro script de Entradas y probamos en Unity a
mover nuestro cubo en el mapa clicando el botón izquierdo:

EJERCICIO10_Inputs

Seguidamente vamos a realizar otro cambio en nuestro propio script donde ahora trabajaremos con el input de vertival y horizontal. Abrimos el Script Entradas y escribimos la siguiente línea de código:

EJERCICIO10_Inputs

Con esta directriz le estamos diciendo a nuestro cubo que podamos moverlo con las flechas del teclado :

EJERCICIO10_Inputs

Cuando utilizamos el comando GetAxis nos estamos refiriendo a los ejes de coordenadas y en este caso al eje horizontal flechas rojas y al eje vertical flechas azules.

Por lo tanto la instrucción que estamos diciendo a nuestro cubo es que si clicamos cualquiera de las flechas de nuestro teclado este se trasladará en la correspondiente dirección que se asignan de izquierda a derecha en el eje horizontal (Rojas) y de arriba a abajo en el eje vertical (Azules).

Finalizamos el ejercicio y lo guardamos con el nombre de Input en nuestro dispositivo.

Categorías: Unity