Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Primeros pasos en Unity. Input System (parte 3) - 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:
Veremos un segundo método para trasladar un asset de entradas a código. En este caso, usando el método InputFindAction
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:
- 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