WEBVTT

00:00.020 --> 00:00.440
Hola a todos.

00:00.440 --> 00:01.370
Bienvenidos al video.

00:01.370 --> 00:04.670
En este video vamos a crear la habilidad de salto en pared para el jugador.

00:08.570 --> 00:10.460
Antes de eso, explicaré las corutinas en Unity.

00:22.280 --> 00:24.020
¿Qué es una corutina y para qué sirve?

00:24.860 --> 00:25.790
Vamos al script del jugador.

00:29.710 --> 00:34.540
Creamos un método privado IEnumerator llamado Coroutine.

00:55.200 --> 01:01.200
Una corutina es como un método que puedes pausar, esperar unos segundos y luego continuar.

01:03.300 --> 01:06.270
Ejemplo: Debug.Log("Coroutine started"); yield return new WaitForSeconds(1); Debug.Log("Un segundo pasó"); yield return new WaitForSeconds(3); Debug.Log("Coroutine terminada").

01:54.420 --> 01:59.460
Para iniciar una corutina, usamos StartCoroutine(nombreCorutina).

02:17.990 --> 02:21.410
Probamos y vemos los mensajes en consola con los tiempos de espera.

03:12.620 --> 03:15.920
Esto será útil para el salto en pared, porque necesitamos pausar el movimiento horizontal un tiempo.

03:31.790 --> 03:32.480
Agregamos un header "Wall Interactions" y variables para la duración y fuerza del wall jump.

04:18.580 --> 04:22.390
Creamos un Vector2 wallJumpForce y un bool isWallJumping.

05:03.030 --> 05:04.290
Creamos el método privado void WallJump.

05:09.390 --> 05:13.320
En WallJump, aplicamos la velocidad usando wallJumpForce.x * -facingDirection y wallJumpForce.y.

06:01.970 --> 06:04.670
Al saltar en la pared, isWallJumping = true.

07:18.420 --> 07:19.440
En el método de salto, si isWallDetected, llamamos a WallJump antes del double jump.

08:00.750 --> 08:02.010
En handleMovement, si isWallJumping, return.

09:07.840 --> 09:18.020
Para que el jugador no pueda moverse durante el wall jump, usamos una corutina que pone isWallJumping en true, espera wallJumpDuration y luego lo pone en false.

09:19.800 --> 09:21.060
Guardamos y probamos: salto en pared y luego puedo moverme de nuevo.

10:03.750 --> 10:06.240
Ajusta wallJumpDuration para que el salto se sienta bien.

11:07.720 --> 11:12.760
Aumenta o disminuye wallJumpForce.x o y para cambiar la dirección y fuerza del salto.

11:28.690 --> 11:31.420
Para que el personaje mire en la dirección correcta, llamamos a Flip después de aplicar la velocidad.

12:28.160 --> 12:35.030
Si quieres, puedes evitar que el jugador voltee durante el wall jump usando un bool canFlip.

12:35.030 --> 12:36.590
También puedes permitir double jump durante el wall jump para mayor flexibilidad.

13:23.100 --> 13:26.070
En wallJump, resetea canDoubleJump a true.

13:38.400 --> 13:42.600
Asegúrate de que solo puedas hacer wall jump si no estás en el suelo y estás en la pared.

14:44.430 --> 14:50.280
Si haces wall jumps muy rápido, puedes tener glitches. Para evitarlo, usa StopAllCoroutines() antes de iniciar una nueva corutina de wall jump.

15:00.240 --> 15:03.300
¡Listo! Wall jump funcionando correctamente. Nos vemos en el próximo video.
