WEBVTT

00:00.020 --> 00:00.500
Hola a todos.

00:00.500 --> 00:01.460
Bienvenidos al video.

00:01.460 --> 00:04.250
En este video vamos a crear la habilidad de deslizarse por la pared.

00:04.250 --> 00:06.440
Y después haremos el salto en pared.

00:06.440 --> 00:09.440
Pero primero, el wall slide. Para eso necesitamos paredes.

00:10.820 --> 00:16.850
Duplicamos una plataforma, la movemos y la estiramos para que parezca una pared.

00:24.160 --> 00:25.570
Y colocamos otra más.

00:28.560 --> 00:29.430
Así está bien.

00:35.100 --> 00:39.600
Si intentamos saltar a la pared ahora, no nos deslizamos, especialmente si mantenemos la tecla.

00:45.480 --> 00:54.930
Para arreglarlo, creamos un Physics Material 2D llamado player material, con fricción en cero, y lo arrastramos al Capsule Collider del jugador.

01:08.760 --> 01:11.310
Probamos en play mode y ahora sí se desliza.

01:13.710 --> 01:19.290
El siguiente paso es detectar la pared y entrar en el comportamiento de wall slide.

01:28.940 --> 01:30.800
En el script del jugador, creamos un bool privado isWallDetected y una variable wallCheckDistance.

01:54.990 --> 01:57.000
En handleCollision, hacemos un raycast a la derecha para detectar la pared.

02:28.050 --> 02:33.750
Dibujamos una línea con gizmos para ver la distancia de comprobación de pared.

03:23.630 --> 03:24.680
Ajustamos el valor a 0.65.

03:41.490 --> 03:44.190
Probamos en debug: cuando nos acercamos a la pared, isWallDetected cambia.

03:52.930 --> 03:55.960
Ahora creamos el comportamiento de wall slide en el script.

04:07.320 --> 04:13.320
Si isWallDetected y rb.velocity.y < 0, mostramos un debug log "wall sliding now".

05:05.630 --> 05:09.890
Para ralentizar al jugador, multiplicamos la velocidad y por 0.5.

05:33.060 --> 05:39.900
Probamos: saltamos a la pared y nos deslizamos lentamente.

05:47.760 --> 05:53.190
Agregamos la animación de wall slide en el animator y la configuramos para que solo se active al saltar o caer en la pared.

06:46.700 --> 06:52.310
Creamos un parámetro booleano isWallDetected y lo usamos como condición para la transición a wall slide.

07:41.830 --> 07:43.120
Probamos: solo entra en wall slide al saltar y bajar por la pared.

08:19.220 --> 08:23.810
Agregamos condición para salir de la animación cuando detectamos el suelo o dejamos de detectar la pared.

09:34.390 --> 09:39.550
Ahora podemos salir del wall slide moviéndonos en dirección opuesta.

10:13.960 --> 10:17.590
Si intentamos movernos hacia la pared, detenemos el movimiento del jugador.

11:03.930 --> 11:05.340
En handleMovement, si isWallDetected, return.

12:18.390 --> 12:24.660
Ahora no podemos movernos hacia la pared, pero sí alejarnos de ella.

13:00.350 --> 13:06.050
Para evitar glitches en la animación, movemos la llamada a handleCollision justo antes de actualizar la animación.

14:03.500 --> 14:05.330
Probamos y ahora es suave y sin glitches.

15:13.370 --> 15:20.690
Mejoramos la legibilidad usando variables locales para las condiciones de wall slide y yModifier.

17:01.610 --> 17:04.910
Si presionamos hacia abajo, el personaje se desliza más rápido.

18:00.920 --> 18:03.320
¡Listo! Así se implementa el wall slide.
