Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Primeros pasos en Unity. Input System (parte 3) - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 13 de diciembre de 2025 por Alvaro H.

5 visualizaciones

Veremos un segundo método para trasladar un asset de entradas a código. En este caso, usando el método InputFindAction

Descargar la transcripción

Bueno, vayamos a por el segundo método que tenemos que para trasladar los inputs que hemos creado en nuestro InputAsset a código. 00:00:07
Este es el que veremos que ha utilizado mucho en la documentación de Unity. 00:00:14
Voy a pensar que es el oficial, aunque insisto, es tan válido como el que acabamos de ver. 00:00:18
Para ello, vamos a ello. 00:00:22
Lo primero que tenemos que saber es que para usar este método en nuestro código tenemos que utilizar una librería nueva, 00:00:24
es decir, la UnityEngineInputSystem. 00:00:33
Bueno, que sepamos que para lo que voy a usar ahora no necesito esta clase. 00:00:36
Es decir, que antes la opción de crear una clase a partir de este inputAsset 00:00:40
no lo necesitamos para este método. 00:00:44
No lo voy a quitar para que no me surjan errores, pero que no lo necesitamos. 00:00:46
Bien, lo primero que tenemos que hacer es vincularlo con el assets de entradas 00:00:50
que hemos creado con las acciones. 00:00:55
Y para eso lo voy a crear público, aunque valdría también ser realizado, 00:00:56
un inputActionAsset. 00:00:59
es decir, un asset con el mapeo de acciones 00:01:03
le voy a llamar inputActions, que es lo que me sugiere 00:01:09
y me parece correcto, y me voy a Unity 00:01:12
y me voy a mi personaje 00:01:15
le voy a añadir el script que estoy creando 00:01:20
y como podemos ver, me pide 00:01:26
un asset de entradas, ¿cuál? el que ha acabado de crear 00:01:30
este, el mío. 00:01:33
Bien. 00:01:36
Ahora, muy importante, 00:01:38
para que esto funcione, por favor, que nadie se lo olvide, 00:01:39
para que esto funcione, como he comentado 00:01:42
antes, el input que voy 00:01:44
a usar tiene que estar vinculado 00:01:46
con el Project Wide. Que os recuerdo, 00:01:48
esto es un recordatorio, que antes en 00:01:50
Edit Project Settings, en el Input Manager, 00:01:52
vimos que aquí había 00:01:55
uno vinculado, el Project Wide Actions, 00:01:56
que es un poco como el que usa por defecto. 00:01:58
Bien, está vinculado el que venía 00:02:00
suyo, el que ya creó el Unity 00:02:01
al crear el proyecto. Y os recuerdo también que 00:02:04
nosotros al crear uno, aquí 00:02:07
nos aparecía este aviso, nuestra alerta. Decía, este no es 00:02:09
el Project White. Y tenemos aquí un atajo para asignarlo. 00:02:13
Si lo pincho, esa alerta ya desaparece. Insisto, 00:02:17
no nos olvidemos de esto porque el anterior método no necesitaba este 00:02:20
paso, pero este sí. Bueno, pues igual que 00:02:22
nos pasaba en el anterior método, tenemos que activarlo y desactivarlo 00:02:25
cuando el objeto que contiene este script 00:02:28
se activa o se desactiva. 00:02:33
Entonces, volvemos a lo mismo. 00:02:35
OnEnable. 00:02:37
Vamos a nuestro input asset que acabamos de crear 00:02:37
y utilizaremos el FindActionMap. 00:02:40
Es decir, búscame un mapa de acciones. 00:02:45
¿Por qué? 00:02:47
Porque ese mapa de acciones, 00:02:48
le metemos entre comillas el nombre. 00:02:49
Yo le he llamado Player, 00:02:54
igual que tengo un UI, 00:02:56
también tengo uno de Player. 00:02:57
Y lo que tenemos que hacer es, efectivamente, activarlo. 00:02:58
Es decir, no hacíamos como en el anterior que activábamos todo el sistema de entradas. 00:03:02
No, aquí vamos a un mapa de acciones en concreto. 00:03:07
En este caso el de player. 00:03:10
Y lo mismo, onDisable. 00:03:12
Me voy a ese input asset. 00:03:16
Búscame un mapa de acciones. 00:03:19
¿Cuál? El de player. 00:03:21
Y disable. 00:03:25
Es un buen momento para comentar que esto que acabo de hacer 00:03:26
lo podemos aplicar incluso en el sistema anterior 00:03:32
y tiene una utilidad muy interesante, que es la de 00:03:36
yo puedo acceder a un asset de entradas, 00:03:39
yo puedo acceder a un mapa de acciones y puedo activarlos y desactivarlos. 00:03:43
No tiene por qué ser cuando el objeto se active en la escena o se desactive. 00:03:46
Puede ser incluso, pensemos, cuando yo ejecuto un menú de pausa, 00:03:51
yo puedo lanzar un menú de pausa y decirle 00:03:54
búscame el mapa de acciones de player y desactívalo 00:03:56
¿por qué? porque mientras esté en pausa 00:03:59
no quiero que el usuario pueda 00:04:01
disparar, saltar o moverse 00:04:02
así que que sepamos que las acciones, los mapas de acciones 00:04:04
los puedo desactivar o desactivar en cualquier momento 00:04:07
utilizando la técnica que acabamos de ver 00:04:09
lo que viene ahora es que tenemos que 00:04:11
vincular las acciones 00:04:13
con variables 00:04:15
¿con qué variables? con unas variables de tipo 00:04:16
input action 00:04:19
y yo por ejemplo le voy a vincular con 00:04:20
la de saltar, jump, lo voy a llamar jump action para indicarle que es la acción de saltar y puedo 00:04:23
crear incluso una que sea pues la de en este caso va a ser la de caminar no va a ser un vector 2 00:04:29
sino un eje como cree previamente y ahora en el awake tenemos que vincular esas variables que 00:04:35
acabamos de crear con la acción de la set de entradas muy bien pues por ejemplo el jump action 00:04:43
lo voy a vincular utilizando la clase InputSystem 00:04:50
para la cual he importado la librería que necesitaba. 00:04:55
Y dentro de esa clase existen las acciones 00:04:58
y dentro de las acciones está el método FindAction. 00:05:02
Y tiene el nombre que le hayamos dado. 00:05:07
En mi caso se llamaba Jump. 00:05:09
Ahí lo tenéis. 00:05:12
Y lo mismo Walk. 00:05:13
La variable WalkAction que había creado 00:05:14
es, utiliza 00:05:17
la clase 00:05:19
inputSystem 00:05:21
vete a tus acciones y busca 00:05:21
una acción llamada 00:05:25
y el nombre que le hayamos dado 00:05:27
bien, y esto lo hemos hecho en el awake de forma que 00:05:28
ya están vinculadas, ahora, ¿qué hacer con ellas? 00:05:31
pues es lo que vamos a ver 00:05:33
pues bien, esto se 00:05:34
asemeja un poco más al antiguo inputSystem 00:05:37
por eso los nostálgicos a lo mejor 00:05:39
lo encuentran más cómodo, porque 00:05:41
a partir de ahora se llama 00:05:42
en el update. Es decir, en el update tengo que comprobar en todo momento 00:05:44
si esas acciones que acabo de vincular se están presionando 00:05:47
o se han dejado de presionar. ¿Y cómo se hace eso? Pues con 00:05:52
if jumpAction 00:05:55
tiene un método que es watchPresetThisFrame 00:05:58
que devuelve una booleana 00:06:06
true si es que sí y false si es que no. Que es lo mismo que 00:06:08
utilizábamos en el antiguo Input System para detectar si habían pulsado un botón. 00:06:13
Entonces le voy a poner, muéstrame, salto. E igual que tenemos 00:06:17
el si se ha presionado, tenemos 00:06:23
si jump action is preset 00:06:26
que significa lo están presionando en este momento. 00:06:30
Y va a mandar algo a la consola que va a decir estoy 00:06:37
saltando. Y lo mismo, también tenemos 00:06:41
if jumpAction 00:06:47
was 00:06:50
released 00:06:51
this frame, voy a mandar 00:06:52
a la consola 00:06:57
he dejado de saltar 00:06:58
resumiendo 00:07:01
tenemos aquí en el update 00:07:03
han presionado este botón 00:07:05
en este fotograma, en ese caso 00:07:08
dime esto, siguen 00:07:09
presionándolo en este fotograma 00:07:11
en ese caso dime esto, y si dejan 00:07:13
de presionarlo, dime esto 00:07:15
vale, se lo doy a guardar 00:07:17
voy a colapsar 00:07:19
la consola, porque ahora en cuanto le doy al play 00:07:20
si todo va bien 00:07:23
que espero que sí 00:07:25
lo tenía vinculado con la tecla A 00:07:26
recuerdo que eso lo hemos hecho con el input asset 00:07:28
que es súper cómodo, si le doy al A 00:07:30
efectivamente me dice que salto 00:07:32
una vez, lo vemos ahí 00:07:35
pero sin embargo estoy saltando, me lo dice en cada fotograma 00:07:37
y si suelto 00:07:39
me dice efectivamente que ha dejado 00:07:40
de saltar, es decir, funciona 00:07:43
sigamos ordenados 00:07:45
vale, ya está todo organizadito 00:07:46
ahora 00:07:51
igual que hemos vinculado la acción 00:07:53
de jumpAction, hemos vinculado 00:07:55
la de walk, que recuerdo que era un 00:07:57
value, era un axis, no era 00:07:59
un vector2, lo que necesito es 00:08:01
asignar lo que devuelva esa acción 00:08:03
a una variable, y en este caso va a ser 00:08:05
una variable de tipo float 00:08:07
le voy a llamar walk 00:08:08
ahora sí, y 00:08:12
esto es relativamente fácil 00:08:16
porque ahora lo único que voy a hacer es decirle 00:08:19
la variable que has creado, que insisto, tiene que ser 00:08:21
del mismo tipo que la acción 00:08:25
que el input que hemos creado, en este caso es un 00:08:26
float, va a ser 00:08:28
busca 00:08:30
esa acción que he vinculado 00:08:32
aquí 00:08:35
y esto es muy parecido al anterior 00:08:36
sistema porque le voy a dar un read value 00:08:40
es decir 00:08:42
lee el callback que está leyendo 00:08:44
ese input y asígnaselo 00:08:46
a esa variable y para comprobar que funciona 00:08:48
ya que 00:08:50
estamos en el update, le voy a decir transform translate 00:08:52
hacia adelante por walk, venga, y muy 00:08:54
importante, como estamos en movimiento cinemático, por time, delta time 00:09:03
ahí está, oh no, me he confundido y 00:09:06
lo he asignado al eje X y yo lo quería asignar al eje Y, no pasa nada 00:09:15
diré que lo he hecho adrede, no es así, pero me sirve para indicar lo rápido que es 00:09:19
y lo fácil que es decirle, oye, que la acción walk lo has vinculado con el eje X 00:09:23
No pasa nada. Le doy Listen. Muevo el eje hacia arriba. Le digo que lo vincule con el eje Y. Lo guardo. Y el otro también. Oye, el negativo y positivo lo has vinculado con el Left. Pues no, con el Down. Y el positivo con el Up. Guardo el Asset. Me voy a Unity. Le doy al Play. Y ahora está vinculado al eje Y. Para adelante, para atrás. Y a los cursores para adelante, para atrás. 00:09:27
Bien, puede parecer muy farragoso todo esto, pero por regla general lo hacemos una vez o por lo menos lo hacemos una vez de forma incómoda y a partir de ahí lo que hacemos es reutilizar un mismo script que hemos creado para otros proyectos. 00:09:57
Y nos queda un tercero. Vamos a por él. 00:10:14
Idioma/s:
es
Materias:
Informática, Imagen y Sonido
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 - Sin obra derivada
Visualizaciones:
5
Fecha:
13 de diciembre de 2025 - 10:19
Visibilidad:
Público
Centro:
CFP JOSÉ LUIS GARCI
Duración:
10′ 17″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
394.77 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid