Respostas:
Quando um jogador colidir com uma parede ao pular (ou, se quiser, cair), acenda uma bandeira pelos próximos 100 milissegundos ou mais, para que a tentativa de pular inicie com êxito um salto (ignorando qualquer verificação de contato com a superfície) com um quantidade razoável de velocidade no eixo X na direção afastada da parede. Lembre-se de desligar a bandeira mais cedo se um salto for realmente iniciado.
Eu honestamente teria feito uma verificação de ponto. Então:
if (falling AND left_key_pressed AND !point_free(x-1,y))
doWallJump
Você pode alterar y para dizer y + sprite_width / 2 (ou - dependendo do seu sistema de coordenadas) para que ele verifique à esquerda do meio seu sprite em vez da parte superior (ou inferior). É assim N implementa verificações de parede para pular de parede (último parágrafo) .
Depois disso, você deve decidir o quão firme você quer que sua parede salte. Se a velocidade vertical do seu salto ultrapassar a horizontal antes que o jogador possa alcançar a mesma parede novamente, você não poderá subir na mesma parede e voltará gradualmente ao fundo (como nos jogos Mario com salto na parede) ) Se você permitir que a horizontal seja fraca o suficiente para o jogador voltar à parede, ele poderá progredir na parede (como no Meat Boy).
Outra abordagem não mencionada é a de Super Metroid. Nesse jogo, quando você estiver contra uma parede, se você sair dessa parede, será exibida uma animação muito curta "movendo-se da parede". Se você pular durante essa animação, fará um salto na parede. (Super Metroid também permite que um jogador suba uma parede usando saltos de parede, mas isso requer um pouco de habilidade (na verdade, tudo sobre pular paredes em Super Metroid requer muita habilidade ...).)