Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Input System. Antiguo sistema. Parte 1 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Veamos cómo funciona el antiguo Input System de Unity, que aunque todavía está disponible poco a poco va siendo sustituido por el nuevo.
Nos adentramos en uno de los terrenos que más posibilidades nos va a dar a la hora de afrontar nuestros productos interactivos
00:00:13
porque estoy hablando de la interactividad precisamente, de cómo Unity recoge las acciones que hace el usuario
00:00:19
y las interpreta y actúa en consecuencia.
00:00:27
Obviamente es uno de los parámetros básicos a la hora de hacer un producto interactivo porque si no, no sería interactivo.
00:00:31
Lo primero que voy a hacer es crear un empty object y a él le voy a asociar un script.
00:00:38
Lo voy a llamar interactivity, por ejemplo, para indicar lo que es.
00:00:46
Y ahora, al abrirlo, lo primero que tenemos que tener en cuenta es que toda la función de comienzo no me interesa.
00:00:50
¿Por qué? Porque obviamente no tengo tanto interés en saber qué tecla está pulsando el usuario cuando se lanza el script,
00:00:58
sino qué va a pulsar o qué va a hacer durante la ejecución del videojuego.
00:01:06
Por eso, donde me voy a mover principalmente es en la función de update, que va a estar en todo momento comprobando si algo se está ejecutando.
00:01:10
Bien, lo que tenemos que saber es que todo lo que tenga que ver con entradas desde algún dispositivo de input, pues lo maneja el método input, como no podía ser de otra forma.
00:01:19
Y es un buen momento para recordar que no está de más nunca ir a la página de referencia de Unity donde están todos los métodos reflejados y no solo eso, sino también sus propiedades y sus métodos públicos.
00:01:28
Es decir, que aquí tenéis todo lo que vamos a ver, bueno, y por supuesto más.
00:01:45
Pero vamos a ver las funciones básicas que encontramos en el método input, por ejemplo.
00:01:50
una de las más básicas es detectar si se está pulsando alguna tecla del teclado
00:01:55
bien, es el get keydown y ahí le tenemos que pasar el código de una tecla
00:02:00
el código de las teclas lo podemos obtener a través del keycode
00:02:05
que tiene a su vez un montón de atributos
00:02:10
y como podéis ver, nos aparecerán aquí cientos de teclas disponibles
00:02:12
entonces si las escribimos, por ejemplo esta se corresponde con la barra espaciadora
00:02:18
Lo que hace esto realmente es devolver true, porque es una booleana, si se está pulsando, y si no se pulsa, un false, con una peculiaridad que la vamos a descubrir ahora mismo.
00:02:23
Así que si yo le pregunto en un if y le paso esta sentencia, todo eso, lo que estoy haciendo es comprobar en cada fotograma, recordad que estamos en el update, en cada fotograma le estoy preguntando si están pulsando esta tecla.
00:02:39
vamos a comprobarlo
00:02:58
esto es la barra espaciadora
00:02:59
vamos a comprobarlo
00:03:04
y de hecho me voy a sacar aquí un tecladito
00:03:07
para que veáis
00:03:09
lanzo el juego y como podemos ver
00:03:10
en la consola no hay nada
00:03:12
pero si yo pulso la barra espaciadora
00:03:14
ahí aparece, se está pulsando la barra espaciadora
00:03:16
pero quiero que nos fijemos en algo
00:03:19
si dejo la barra espaciadora pulsada
00:03:21
solo aparece una vez
00:03:23
si la levanto y la vuelvo a pulsar
00:03:26
vuelve otra vez a aparecer
00:03:29
porque esa es una de las características
00:03:30
del GetCadeDown
00:03:32
que lanza True si detecta
00:03:34
que se ha pulsado esa tecla
00:03:36
pero no vuelve a ponerse en False
00:03:37
hasta que levanto el dedo
00:03:41
de la barra espaciadora
00:03:42
con lo cual lanza una vez un True
00:03:44
y hasta que no lo vuelva a pulsar
00:03:46
no vuelve a lanzarse
00:03:47
ahora mismo me interesa más
00:03:51
que entendamos
00:03:53
que igual que existe el GetCadeDown
00:03:54
Pues existe, por ejemplo, el Get Mouse Button Down, que es exactamente lo mismo, solo que refiriéndose al ratón.
00:03:57
Y fijaros que aquí me está pidiendo un número entero. ¿Por qué?
00:04:09
Porque aquí lo que me está pidiendo es un 0 para el botón izquierdo, un 1 para el botón derecho, un 2.
00:04:14
Vamos a comprobarlo. Le voy a preguntar si se pulsa el botón 1 del ratón, lance a consola, se está haciendo left mouse click.
00:04:21
Es decir, que está andando al botón izquierdo del ratón.
00:04:36
Bueno, perdón que le he puesto el 1. No debemos olvidarnos que los programadores empiezan a contar en 0, así que el 0 es el botón izquierdo del ratón.
00:04:42
Lo voy a guardar, lo lanzo y ahora atentos porque si le hago clic fuera de la ventana me estoy saliendo del juego y por lo tanto no lo detectará.
00:04:50
Tengo que hacer clic pero dentro de la ventana de juego para que me detecte ese clic.
00:05:04
Y ahí está.
00:05:08
Y pasa exactamente igual que con la barra espaciadora, solo detecta una vez hasta que lo levanto y lo vuelvo a pulsar.
00:05:11
Ya que estamos, igual que tenemos GetMouseButtonDown y demás, pues también incluso tenemos otra opción que es el GetButtonDown.
00:05:16
Y aquí ¿qué me está pidiendo? Como podemos ver, un string. Es decir, no un código ni un número entero, sino una cadena.
00:05:29
Aquí se refiere a un nombre. Por ejemplo, aquí le voy a escribir Fire 1 y le voy a decir que mande a consola.
00:05:42
Print. Se ha disparado. Voy a lanzar el juego. Pues bien, y le estoy dando a un botón de mi joystick.
00:05:53
Y como podemos ver, se está detectando en la consola.
00:06:13
Bien, y ahora viene la pregunta, ¿y dónde le he dicho yo que este código, esta palabra, se refiere a ese botón?
00:06:17
Pues vamos a una de las ventanas que tenemos que conocer si queremos manejar la interactividad que tenemos en Edit, Project Settings, y aquí tenemos la opción de Input Manager,
00:06:28
donde configuramos todas las opciones que hay o todas las posibilidades de entrada que hay a la hora de pulsar.
00:06:41
Lo que tenemos que entender es que la primera de las opciones que hemos dado, que le hemos dicho un código de tecla,
00:06:50
son códigos que ya están vinculados dentro de Unity, pero eso no es muy práctico porque imaginaros que queremos que una misma acción,
00:06:55
por ejemplo un disparo, esté asociado a varias teclas. En ese caso, y además no quiero llamarlo por un código,
00:07:03
sino que quiero llamarlo a través de una palabra que me sea mucho más fácil, digamos, identificarlo.
00:07:09
Para eso existe el Input Manager, donde podemos crear tantos palabras o tantos códigos de entrada
00:07:14
mediante cadenas de texto que luego vincularemos con entradas.
00:07:20
Vamos a verlo en la ventana. Por ejemplo, fijaros que el Fire 1, que ya viene por defecto,
00:07:24
pero podemos crear más porque yo le puedo dar con el botón derecho, duplicarlo y cambiarle el nombre
00:07:31
y decirle que esto es fuego. Entonces, bueno, que sepáis que podemos crear aquí más elementos
00:07:38
aparte de los que hay, pero el caso es que este fire1 se corresponde con el nombre que yo le he dado aquí
00:07:44
y que aquí le dicen negativeButton y positiveButton. ¿Qué significa?
00:07:51
El negativo y el positivo lo entenderemos mucho mejor cuando veamos los ejes,
00:08:00
en el que decimos que uno es para hacia un lado y otro es para el otro.
00:08:03
En cualquier caso, le voy a decir que cuando yo pulse el joystick button 16, se ejecuta.
00:08:07
¿Y cuál es el joystick button 16?
00:08:16
Pues bueno, en fin.
00:08:18
Pues bien, existe mucha documentación en internet al respecto,
00:08:19
donde podemos encontrar códigos que existen tanto para los controladores en PC como en Mac,
00:08:22
y donde yo puedo ver que efectivamente el botón que acabo de pulsar, que es el A,
00:08:28
se corresponde con el joystick button 16.
00:08:31
Esto porque es mi Mac.
00:08:35
Pero si lo hacemos en PC, el botón A se corresponderá con el joystick botón 0.
00:08:37
Y si quiero incluso decirle que otro botón también dispare, por ejemplo, el mouse, le voy a decir el mouse 1,
00:08:42
que se corresponde con el botón derecho, pues lo vamos a comprobar.
00:08:51
Cierro.
00:08:58
Y si lanzo la partida, pues tendré asociado el disparo no solo al botón del gamepad, sino también...
00:09:00
Ahí está, le estoy dando al botón derecho de mi ratón.
00:09:08
Pero tenemos la limitación que hemos visto antes, que es que me detecta cuando lo pulso, se pone en True y no se vuelve a poner en False hasta que lo libero.
00:09:11
Pero quiero que, y si quiero que me esté detectando constantemente su pulsación, pues para eso existe otra variante que es el Get Key.
00:09:18
Lo vamos a ver. Voy a borrar todos estos y le voy a decir que si se está dando la situación de Get Key, ¿veis?
00:09:24
y pasándole el nombre de alguna tecla, voy a decirle que si está apretando la tecla Space,
00:09:37
que esta sí que me la reconoce como una cadena de texto.
00:09:47
De hecho, si vamos a la página de Unity con el método K-Code,
00:09:50
ahí nos aparecerán todas las que reconoce.
00:09:54
Por ejemplo, esta que acabo de dar yo es una muy estándar, que es la de la barra espaciadora.
00:09:57
Aquí la tenemos.
00:10:02
Le voy a decir que detecte que se está disparando.
00:10:05
Si lanzo mi juego, efectivamente veremos que si yo pulso la barra espaciadora, no lo detecta una vez.
00:10:09
De hecho, si nos fijamos ahí, veremos que está cada fotograma detectando que se está disparando.
00:10:18
Es decir, que podría lanzar una bala por cada fotograma que pasa.
00:10:23
Y en cuanto levanto, pues lógicamente deja de contar. 769 disparos ha detectado.
00:10:27
- Idioma/s:
- Materias:
- Informática, Imagen y Sonido
- Etiquetas:
- 3d
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Primer Curso
- Segundo Curso
- Autor/es:
- Alvaro Holguera Gozalo
- Subido por:
- Alvaro H.
- Licencia:
- Reconocimiento - No comercial - Compartir igual
- Visualizaciones:
- 66
- Fecha:
- 18 de septiembre de 2025 - 23:49
- Visibilidad:
- Público
- Centro:
- CFP JOSÉ LUIS GARCI
- Duración:
- 10′ 39″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1280x720 píxeles
- Tamaño:
- 313.77 MBytes