Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Input System. Antiguo sistema. Parte 2 - 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:
En este segundo video dedicado al antiguo Input System de Unity, veremos cómo obtener los datos de un joystick mediante valores de ejes
Y ahora vamos a una de las funciones más útiles y que, si entendemos, nos dará mucha versatilidad, que es la de GetAxis.
00:00:08
Bien, para entendernos, el GetAxis, y aquí nos pide un nombre de ese eje, y este sí que lo podemos configurar luego en el InputManager,
00:00:18
pero bueno, ya vienen algunos configurados por defecto, por ejemplo el vertical o el horizontal.
00:00:28
Si nos vamos a nuestro Unity, veremos que ya hay algunos configurados, horizontal, vertical,
00:00:33
y que están ya configurados para ser detectados por bien un joystick o por el ratón o por el eje X, en este caso de las teclas.
00:00:45
¿Y qué hace esto?
00:00:57
Pues devuelve un número entre menos 1 y 1 con todos los decimales entre medio, es decir, devuelve un float.
00:00:58
Lo vamos a comprobar. Le voy a decir directamente nada, sin más.
00:01:08
Le digo que me muestre con un print el valor del getAxis vertical.
00:01:11
Así que si lanzo el juego, veremos que aquí me aparece un 0, porque mientras yo no toque nada, vemos, me está diciendo que 0.
00:01:22
el eje vertical
00:01:29
si le doy a los cursores
00:01:31
vemos que pasa de 0 a 1
00:01:33
si le doy al cursor hacia arriba
00:01:36
pasa de 0 a menos 1
00:01:38
si le doy hacia abajo
00:01:39
o incluso con mi gamepad
00:01:41
si empiezo a mover el joystick
00:01:42
hacia arriba o hacia abajo
00:01:46
efectivamente va pasando de 0 a menos 1
00:01:49
bien, pensemos que
00:01:52
en todas las posibilidades que nos ofrece esto
00:01:55
realmente lo que les estamos diciendo es que
00:01:57
detecte entre un valor de menos uno y uno pasando por cero,
00:01:59
cómo me estoy desplazando en un eje.
00:02:07
Y ese eje lo puedo asociar a teclas.
00:02:09
De hecho, también está asociado el eje vertical a las teclas W y S,
00:02:11
el eje horizontal a las teclas A y D.
00:02:15
Pero si eso yo, ese valor, lo multiplico con un valor de desplazamiento,
00:02:18
pues ya tengo un objeto moviéndose.
00:02:22
Lo vamos a comprobar y veremos lo fácil que es.
00:02:23
Si yo ahora, ahora sí, le voy a añadir un objeto, por ejemplo un cubo, este.
00:02:26
Por cierto, voy a hacer una cosa, voy a alinear la cámara con este objeto, ¿vale?
00:02:34
Ahí tengo la cámara moviendo y perdonadme que vaya a hacer una pequeña trampa, que no es tal,
00:02:45
pero realmente es hacer que la cámara en todo momento siga mi objeto.
00:02:52
Voy a asociarle este script a mi cámara, lo voy a abrir y fijaros lo fácil que es, no es tan fácil, pero si lo que quiero es que un objeto en todo momento esté apuntando hacia otro objeto, pues es tan fácil como crearle una variable de tipo transform, lo voy a llamar pointAt, por ejemplo, y decirle en este caso a la cámara, porque estoy asociado a la cámara, que toTransform y veremos que tiene un método llamado lookAt.
00:02:58
donde le tenemos que decir qué variable tipo transform a la que tiene que mirar.
00:03:42
Obviamente, ¿cuál va a ser?
00:03:49
Me voy a ir a mi Unity, me voy a mi cámara y aquí tengo la variable y voy a arrastrarle ahí, por supuesto, el cubo.
00:03:52
Nada, este pequeño truquillo que lo veremos más adelante es sencillamente para que la cámara ahora mismo
00:04:04
esté en todo momento mirando al cubo y así, bueno, lo pueda mover libremente sin que me desaparezca de la pantalla.
00:04:08
Vamos con el script del cubo. Veamos lo fácil que es.
00:04:15
Si yo a este cubo ya hemos visto que esto me devuelve un número entre 0 y 1 con el eje vertical,
00:04:20
pues bien, si yo le digo a mi cubo que, utilizando el translate que hemos visto antes,
00:04:31
que es un método dentro del método transform
00:04:43
y que me está pidiendo un vector3
00:04:45
pero es que el vector3 lo podemos incluso declarar nosotros mismos
00:04:50
con una de las funciones muy cómodas que tiene
00:04:55
que es por ejemplo que se mueva arriba
00:04:58
pero, y aquí viene lo interesante
00:05:00
y si yo le digo
00:05:06
lo voy a hacer en varias líneas para que quede más claro
00:05:12
y si yo quiero una nueva variable de tipo float
00:05:16
cuyo valor, bueno, que el nombre sea desplazamiento en x, bueno, en este caso en y, lo voy a hacer en minúscula, seamos buenos,
00:05:19
y su valor es lo que me está devolviendo el getaxis, es decir, un número entre menos uno y uno.
00:05:32
Y si yo a este vector 3 lo multiplico por ese valor, recordemos que los vectores se pueden hacer cálculos con ellos,
00:05:41
entre ellos multiplicar por un número
00:05:51
que significa que si lo multiplico por 0
00:05:53
es decir, no toco nada, no se moverá
00:05:55
pero en el momento en el que yo empiece a desplazar el objeto
00:05:58
a desplazar el eje
00:06:00
pues el objeto también se empezará a mover en ese sentido
00:06:03
muy importante, siempre que trabajemos con algo que se desplace
00:06:06
tenemos que también multiplicarlo por time, deltaTime
00:06:09
ahí lo tenemos
00:06:16
añado este script a mi cubo
00:06:18
Y ahora mismo veremos que el cubo, efectivamente, lo muevo con mis cursores.
00:06:22
Y si traigo aquí mi teclado, veremos que con los cursores arriba y abajo, que son el eje vertical, se desplazan.
00:06:35
Pero es que también con la V y con la S.
00:06:43
No está de más aplicarle una velocidad, como ya vimos en un vídeo anterior, no nos cuesta mucho porque aquí le decimos que nos cree una variable serializada de tipo float que se llama speed, cuyo valor va a ser de momento 5, 5f para indicarle que es un float,
00:06:47
Y a este desplazamiento lo vamos a multiplicar directamente por la variable speed.
00:07:11
Así podemos controlar la velocidad a la que se desplaza.
00:07:19
Bien, antes de seguir, ¿dónde él determina que este eje vertical se corresponde con las teclas que hemos visto?
00:07:24
¿Con la W, la S, con los cursores o incluso con el joystick?
00:07:32
Pues de nuevo en el Input Manager.
00:07:38
Si nos vamos aquí a el eje vertical nos encontramos con que efectivamente está asociado a el negativo a la tecla down, es decir que ahí es hacia el eje negativo, hacia menos uno, el positivo a la tecla up, también las teclas S y W y también al eje X del joystick.
00:07:41
De hecho, ya que estamos, pues no nos cuesta nada decirle, muy bien, pues igual que tenemos un desplazamiento en Y, podemos tener un desplazamiento en X, que es igual a lo que me devuelve el GetAxis, pero en este caso en horizontal.
00:08:06
Insisto que este nombre tiene que estar declarado en el InputManager.
00:08:30
Y voy a aplicarle la misma velocidad.
00:08:35
Podemos aplicarle velocidades distintas si creamos dos variables distintas.
00:08:36
distintas y aquí le voy a decir a mi cubo que se haga una traslación se desplace hacia dónde
00:08:39
hacia un vector 3 pero en este caso no el up sino el por ejemplo left por supuesto por lo que me
00:08:47
devuelva el eje por la velocidad veo que aquí hay un error lo voy a corregir ahora mismo por
00:09:00
perdón, por el time, delta time. Y aquí hay un error que lo corrijo ahora mismo y ahí que había
00:09:12
cerrado el paréntesis sin querer. Vale, pues ahora me voy a mi Unity y con estas líneas de código
00:09:31
tan sencillas, si ahora mismo lanzo el juego, pongo aquí el teclado y de hecho si selecciono el cubo
00:09:40
para que veamos sus coordenadas, veremos que si uso los cursores, selecciono la ventana
00:09:48
de juego, si uso los cursores vemos que los cursores izquierda-derecha, al igual que A
00:09:54
y D, desplazan el cubo en X. Si uso la W y la S, lo desplazo arriba y abajo, igual que
00:10:00
los cursores arriba y abajo. Pero es que incluso el Gamepad me permite, como buen joystick,
00:10:09
desplazarme en los dos ejes por supuesto no hace falta que diga que en cualquier
00:10:17
momento podemos recuperar los valores de los que estoy es decir la posición en x
00:10:26
la posición en y poner condicionales para restringir movimientos para decirle
00:10:31
si en algún momento la posición en y pasa de cierto valor pues no dejar de
00:10:36
aplicar esta esta traslación
00:10:40
- 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:
- 60
- Fecha:
- 18 de septiembre de 2025 - 23:51
- Visibilidad:
- Público
- Centro:
- CFP JOSÉ LUIS GARCI
- Duración:
- 10′ 44″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1280x720 píxeles
- Tamaño:
- 279.80 MBytes