Hola a todos.
Bienvenidos al video.
En este video vamos a crear la habilidad de deslizarse por la pared.
Y después haremos el salto en pared.
Pero primero, el wall slide. Para eso necesitamos paredes.
Duplicamos una plataforma, la movemos y la estiramos para que parezca una pared.
Y colocamos otra más.
Así está bien.
Si intentamos saltar a la pared ahora, no nos deslizamos, especialmente si mantenemos la tecla.
Para arreglarlo, creamos un Physics Material 2D llamado player material, con fricción en cero, y lo arrastramos al Capsule Collider del jugador.
Probamos en play mode y ahora sí se desliza.
El siguiente paso es detectar la pared y entrar en el comportamiento de wall slide.
En el script del jugador, creamos un bool privado isWallDetected y una variable wallCheckDistance.
En handleCollision, hacemos un raycast a la derecha para detectar la pared.
Dibujamos una línea con gizmos para ver la distancia de comprobación de pared.
Ajustamos el valor a 0.65.
Probamos en debug: cuando nos acercamos a la pared, isWallDetected cambia.
Ahora creamos el comportamiento de wall slide en el script.
Si isWallDetected y rb.velocity.y < 0, mostramos un debug log "wall sliding now".
Para ralentizar al jugador, multiplicamos la velocidad y por 0.5.
Probamos: saltamos a la pared y nos deslizamos lentamente.
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.
Creamos un parámetro booleano isWallDetected y lo usamos como condición para la transición a wall slide.
Probamos: solo entra en wall slide al saltar y bajar por la pared.
Agregamos condición para salir de la animación cuando detectamos el suelo o dejamos de detectar la pared.
Ahora podemos salir del wall slide moviéndonos en dirección opuesta.
Si intentamos movernos hacia la pared, detenemos el movimiento del jugador.
En handleMovement, si isWallDetected, return.
Ahora no podemos movernos hacia la pared, pero sí alejarnos de ella.
Para evitar glitches en la animación, movemos la llamada a handleCollision justo antes de actualizar la animación.
Probamos y ahora es suave y sin glitches.
Mejoramos la legibilidad usando variables locales para las condiciones de wall slide y yModifier.
Si presionamos hacia abajo, el personaje se desliza más rápido.
¡Listo! Así se implementa el wall slide.