Réponses:
Lorsqu'un joueur entre en collision avec un mur en sautant (ou, si vous le souhaitez, en tombant), allumez un drapeau pendant les 100 millisecondes suivantes, ce qui provoque une tentative de saut pour initier avec succès un saut (en ignorant les contrôles de contact de surface) avec un assez de vitesse sur l'axe X dans la direction opposée au mur. N'oubliez pas d'éteindre le drapeau tôt si un saut est en fait amorcé.
Honnêtement, j'aurais juste fait une vérification par points. Donc:
if (falling AND left_key_pressed AND !point_free(x-1,y))
doWallJump
Vous pouvez changer le y pour dire y + sprite_width / 2 (ou - selon votre système de coordonnées) afin qu'il vérifie à gauche du milieu votre sprite au lieu du haut (ou du bas). C'est ainsi que N implémente des vérifications de murs pour les sauts de murs (dernier paragraphe) .
Après cela, vous devez décider à quel point vous voulez que votre mur saute. Si la vitesse verticale de votre saut dépasse l'horizontale avant que le joueur ne puisse à nouveau atteindre ce même mur, vous ne pourrez pas sauter le même mur et retomber progressivement vers le bas (comme dans les jeux Mario avec saut de mur ). Si vous permettez à l'horizontale d'être suffisamment faible pour que le joueur puisse revenir au mur, il / elle pourra progresser vers le haut du mur (comme dans Meat Boy).
Une autre approche non mentionnée est celle de Super Metroid. Dans ce jeu, lorsque vous êtes contre un mur, si vous vous éloignez de ce mur, une très courte animation "se déplacer hors du mur" sera jouée. Si vous sautez pendant cette animation, vous ferez un saut au mur. (Super Metroid permet également à un joueur de grimper sur un mur en utilisant des sauts de mur, mais cela nécessite un peu de compétence (en fait, tout ce qui concerne le saut de mur dans Super Metroid nécessite un peu de compétence ...).)