回答:
プレーヤーがジャンプ中に壁に衝突した場合(または必要に応じて落下した場合)、次の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でのウォールジャンプに関するすべてのスキルにはかなりのスキルが必要です。)