WEBVTT

00:00.050 --> 00:00.560
Hola a todos.

00:00.560 --> 00:01.580
Bienvenidos al video.

00:01.580 --> 00:07.310
En este video quiero mostrarte cómo voltear el personaje, porque ahora si intentamos correr a la izquierda, no se voltea.

00:07.310 --> 00:09.200
Y se siente raro, ¿verdad?

00:10.760 --> 00:12.740
Déjame explicarte qué podemos hacer aquí.

00:12.740 --> 00:17.030
Una forma es voltear el sprite aquí, pero no lo prefiero por una razón sencilla.

00:17.030 --> 00:20.930
Cuando volteamos el sprite, solo se voltea el sprite, nada más.

00:25.430 --> 00:32.090
Así que ahora mi personaje mira a la izquierda, pero su vector right, su dirección de frente, sigue apuntando a la derecha, y no podemos trabajar con eso porque más adelante tendremos una comprobación de pared para el salto en pared, que se lanzará a la derecha, y quiero que esa comprobación también se voltee cuando volteamos el personaje.

00:44.330 --> 00:51.200
Porque si no lo hacemos así, pero rotamos el personaje en Y a 180, también mirará a la izquierda, pero al mismo tiempo su vector right apuntará a la izquierda.

01:00.550 --> 01:02.890
Así que sabemos la dirección de frente, volteamos la dirección y el sprite al mismo tiempo.

01:08.470 --> 01:12.190
Ahora, ¿cómo volteamos el personaje junto con la dirección de frente?

01:12.190 --> 01:16.510
En realidad, solo cambiamos la rotación en Y aquí y rotamos el personaje 180 en Y cada vez que queremos voltearlo.

01:21.070 --> 01:26.650
Así es como se verá: ¡boom! y luego ¡boom! así de simple.

01:26.650 --> 01:28.720
Hagámoslo en el script.

01:28.720 --> 01:32.320
Apliquemos esta rotación al transform en el script.

01:36.030 --> 01:40.080
En algún lugar abajo pero antes de onDrawGizmos, haré un método privado void Flip.

01:47.120 --> 01:47.960
Transform.

01:47.960 --> 01:48.890
Rotate.

01:50.190 --> 01:57.840
Cero en X, 180 en Y y cero en Z, así que solo rotamos en el eje Y.

01:58.170 --> 02:05.220
Guardamos y llamamos a esta función para asegurarnos de que funciona. En Update, si Input.GetKeyDown(KeyCode.C), llamamos a Flip.

02:13.440 --> 02:14.550
Regresamos.

02:21.650 --> 02:27.170
Estoy parado aquí, presiono la tecla C y se voltea.

02:28.250 --> 02:34.670
Por supuesto, no puedo presionar esta tecla cada vez que necesito voltear el personaje, debe hacerse automáticamente.

02:37.580 --> 02:39.380
Así que haremos un método que compruebe si el jugador está mirando a la derecha y si está mirando a la derecha pero su velocidad es negativa y corre a la izquierda, debemos voltearlo.

02:57.700 --> 03:01.740
Si está mirando a la izquierda pero debe mirar a la derecha porque se mueve a la derecha, también lo volteamos.

03:05.190 --> 03:08.940
Para eso, aquí necesitamos un booleano privado facingRight = true.

03:17.590 --> 03:19.480
Desde el inicio sabemos que mira a la derecha.

03:23.160 --> 03:24.990
Ahora hagamos un método privado void HandleFlip.

03:36.590 --> 03:45.470
En este método, si velocity.x < 0 y facingRight, llamamos a Flip.

03:49.310 --> 03:52.820
Ahora llamamos a este método en Update después del movimiento.

04:01.800 --> 04:04.290
Guardamos y probamos.

04:11.570 --> 04:12.830
Estoy parado, corro a la izquierda y se voltea.

04:16.160 --> 04:19.160
Pero es demasiado, lo arreglaremos.

04:21.020 --> 04:21.980
Ahora se volteó.

04:22.640 --> 04:26.150
Cuando corro a la derecha, no se voltea. ¿Cómo lo arreglamos?

04:39.120 --> 04:43.200
Cuando volteamos, no solo volteamos el personaje, también decimos que ya no está mirando a la derecha.

04:56.640 --> 05:04.440
Pero podemos hacer facingRight = !facingRight cada vez que llamamos a Flip.

05:07.980 --> 05:12.510
Probamos en Unity: corro a la izquierda, se voltea una vez, corro a la derecha, no se voltea.

05:47.160 --> 05:54.000
Agregamos una condición OR: si velocity.x > 0 y !facingRight, también llamamos a Flip.

06:09.290 --> 06:10.940
Probamos y funciona.

06:26.540 --> 06:33.230
Corro a la derecha, izquierda, derecha, izquierda, y también funciona con el salto. ¡Genial!

07:04.120 --> 07:05.170
Agregamos una variable int facingDirection = 1 para saber si mira a la derecha o izquierda.

07:29.940 --> 07:36.720
En Flip, facingDirection *= -1, así será 1 o -1. Probamos en modo debug y funciona.

08:00.310 --> 08:01.690
¡Buen trabajo! Nos vemos en el próximo video.
