
GDevelopで壁滑り・壁ジャンプを実装する際の課題と解決策
GDevelopのコミュニティフォーラムにて、プレイヤーキャラクターが壁に接触した際に壁滑り(Wall Sliding)状態になり、そこから壁ジャンプ(Wall Jumping)で反対方向へ跳躍する機能の実装について、助けを求める投稿がありました。
投稿者によると、この機能は数ヶ月にわたって試行錯誤が重ねられてきたものの、期待通りの動作が実現できていないとのことです。具体的には、壁に密着した状態でジャンプし、壁と反対方向のキーを押した場合にのみ、断続的に壁滑り状態がトリガーされるという状況が発生しています。
本来の期待される動作は、プレイヤーが壁(左右どちらの壁でも可)に落下したり、壁に向かってジャンプしたりした際に、壁滑り状態に移行することです。壁滑り中はキャラクターがゆっくりと壁を滑り落ち、壁ジャンプで反対方向へ跳ぶことができることを想定しています。これにより、メトロイドシリーズのような、壁から壁へと飛び移って上昇していくアクションが可能になります。
しかし、現状では壁に落下した場合や、距離を取って壁にジャンプした場合に壁滑りがトリガーされず、前述のような限定的な条件下でしか機能しないという問題が報告されています。
この投稿には、現在の状態を示すスクリーンショットが複数添付されており、プレイヤーの状態遷移(Fall, WallSlide, Jump, Idle)が視覚的に確認できるようになっています。





この問題に対するコミュニティからのアドバイスが求められており、必要であれば動画やプロジェクトファイルの提供も検討されているようです。
このような複雑なキャラクターアクションの実装では、状態遷移(Finite State Machine - FSM)のロジックや、接触判定、入力処理などが相互に影響し合うため、デバッグが困難になることがあります。フォーラムでの情報交換が、問題解決の糸口となることが期待されます。