Respuestas:
Cuando un jugador colisiona con una pared mientras salta (o, si lo desea, cae), encienda una bandera durante los siguientes 100 milisegundos o más, lo que provoca un intento de saltar para iniciar con éxito un salto (ignorando cualquier verificación de contacto de superficie) con un buena cantidad de velocidad en el eje X en la dirección alejada de la pared. Recuerde apagar la bandera temprano si de hecho se inicia un salto.
Sinceramente, habría hecho una verificación de puntos. Entonces:
if (falling AND left_key_pressed AND !point_free(x-1,y))
doWallJump
Es posible que desee cambiar la y para decir y + sprite_width / 2 (o, dependiendo de su sistema de coordenadas) para que compruebe a la izquierda del medio su sprite en lugar de la parte superior (o inferior). Así es como N implementa los controles de pared para saltar la pared (último párrafo) .
Después de eso, debes decidir qué tan apretado quieres que salte tu muro. Si la velocidad vertical de tu salto supera la horizontal antes de que el jugador pueda alcanzar esa misma pared nuevamente, no podrás saltar en la misma pared y caerás gradualmente hacia abajo (como en los juegos de Mario con salto de pared ) Si permites que la horizontal sea lo suficientemente débil como para que el jugador regrese a la pared, él / ella podrá avanzar por la pared (como en Meat Boy).
Otro enfoque no mencionado es el de Super Metroid. En ese juego, cuando estás contra una pared, si te mueves de esa pared, se reproducirá una animación muy corta de "movimiento fuera de la pared". Si saltas durante esa animación, harás un salto de pared. (Super Metroid también permite que un jugador trepe una pared usando saltos de pared, pero requiere un poco de habilidad (de hecho, todo sobre saltar la pared en Super Metroid requiere un poco de habilidad ...).