Відповіді:
Коли гравець зіштовхується зі стіною під час стрибків (або, якщо вам подобається, падає), увімкніть прапор протягом наступних 100 мілісекунд або близько того, що спричиняє спробу стрибку, щоб успішно ініціювати стрибок (ігноруючи будь-які перевірки контакту поверхні) за допомогою велика швидкість на осі X у напрямку від стіни. Не забудьте вимкнути прапор рано, якщо стрибок насправді ініційований.
Я, чесно кажучи, щойно зробив точку перевірки. Так:
if (falling AND left_key_pressed AND !point_free(x-1,y))
doWallJump
Ви можете змінити y, щоб сказати y + sprite_width / 2 (або - залежно від вашої системи координат), щоб він перевіряв ліворуч від середини спрайт замість верхнього (або нижнього). Ось так N здійснює перевірку стін на стрибки на стіні (останній абзац) .
Після цього ви повинні вирішити, наскільки щільно ви хочете, щоб ваша стіна стрибала. Якщо вертикальна швидкість вашого стрибка подолає горизонтальну, перш ніж гравець зможе знову досягти тієї самої стіни, ви не зможете стіни стрибати вгору по тій самій стіні і поступово опуститься назад на дно (як в іграх Маріо зі стрибками на стіну ). Якщо ви дозволите, щоб горизонталь була досить слабкою, щоб гравець повернувся до стіни, він / вона зможе просуватися вгору по стіні (як у Meat Boy).
Ще один підхід, який не згадується, - це Super Metroid. У тій грі, коли ви знаходитесь біля стіни, якщо ви відсунетесь від цієї стіни, буде грати дуже коротка анімація, що «відходить від стіни». Якщо ви скачете під час цієї анімації, ви зробите стрибок на стіні. (Super Metroid також дозволяє гравцеві піднятися на стіну за допомогою стрибків на стіні, але для цього потрібно трохи навичок (адже все, що стосується стрибків на стіні в Super Metroid, вимагає неабиякої майстерності ...).)