よくわからないけど動いているからヨシ!壁ジャンプについて「Near The Sun」制作記#7

2025 年 5 月 11 日 | カテゴリー: Near The Sun, 製作について

15期のドッグウッドと申します。

今回は簡単そうに見えて奥が深い、壁ジャンプについて話していこうと思います。
思っていたよりパラメータが多くて実装にかなり苦労しました……。

壁キックと聞いて、あなたはどの作品の壁キックを思い出すでしょうか。
「マリオ」シリーズ、Celeste、SANABI、ScourgeBringer、Dead Cells……2Dプラットフォーマーでは実装されていない作品の方が少ないのではないでしょうか。

壁ジャンプについて、実装に悩んだ点は3つあります。

1.壁ジャンプによって壁を上ることができるか?
マリオUやCelesteでは、片面の壁だけでは壁キックをしても登ることはできない(はず)です。壁キックをしていても、だんだんと高度が下がっていきます。それに対しSANABIやScourgeBringer、Dead Cellsでは壁キックにより壁を上ることができます。
これらの作品を大まかに見ると、特殊な地形そのものがパズルになっている作品が前者で、ハイスピード・地形を縦横無尽に駆ける作品が後者になっているようですね。
「Near The Sun」は特殊な地形を持つ上にハイスピードに地形を駆け回る作品なのですが、爽快感を失わせたくなかったこと、また、壁に張り付いている間にどちらにせよエネルギーが回復されて上昇できることから、壁を上ることができるようにしました。

2.壁ジャンプの軌道は?
壁ジャンプの軌道、おそらく最初に考えるのは下のような軌道でしょう。

何も入力しなければ赤色の多重線、右や左に入力をいれると左右に力が入り右側の青色の軌道や左側の青色の軌道に近づく感じですね。
これを単純な関数で実装する方法、どうすればいいんでしょうか。
…………いやほんとに、どうすればいいんでしょう。
だんだんと掛ける力を大きくすればいいのか、それなら途中で一度左右入力を外した場合はどうなるのか、そもそも壁に近づく向き/遠ざかる向きで力の大きさを変えるべきか……考えることは多く、また調整もしやすくないといけません。
そして、軌道を考える上ではy軸方向の移動、つまり落下が2次曲線的に動くことも考慮に入れないといけません。ジャンプの入力時間で最大到達点もジャンプ時間変わりますし。

無理ですよ、ほんとに……。
ちなみにコードはこうなってます。

だいぶ昔に書いたコードなのでかなり忘れている

まず、1行目のxmoveamountが「何も入力がないときに描く軌道」ですね。
何も入力がないと9・10行目に飛びます。
9・10行目で主人公を動かしています。
何も入力がない場合
1フレームの経過時間×(前フレームの速度+壁から離れる方向×力の大きさ×1フレームの経過時間)だけ動かしています。
また、ジャンプから一定時間経過後、入力があった場合に(
壁から離れる方向×力の大きさ×1フレームの経過時間 )に値を乗算しています。
外側には2.5倍、内側には2倍を掛けています。
正直、これでなんでうまく動いているのかあまりよくわかっていません。自分で書いたコードなのに……。いろいろ試してうまく動いたのでこれを使っています。

3.壁ジャンプの発動条件は?
そんなの、壁でジャンプキーを押したら発動でしょ?と思われるかもしれませんが、いくつか他の条件があります。
まずは、左右の入力方向・左右の向きです。壁の方を向いているときにジャンプキーで発動、壁の方へ入力を入れているときにジャンプキーで発動、壁の近くにいれば入力関係なく発動の3パターンが考えられます。
一見「壁の近くにいれば入力関係なく発動」が一番発動しやすそうに見えます。実際、Celesteでは壁を向いているか、左右に入力されているかは関係なく壁キックを行うことができます。
しかし本作では空中にいる場合、壁ジャンプとダッシュのボタンが共通なので、ボタンの入力だけではプレイヤーがダッシュを発動したいのか壁ジャンプを発動したいのかが曖昧です。
そこで、本作では上下方向・壁から遠ざかる方向に入力が入っていればダッシュ、壁方向・方向入力なしの場合は壁ジャンプが発動・また、壁スライド中は入力方向関係なくダッシュが発動という仕様にしました。
これにより、プレイヤーは思い通りにダッシュ・壁ジャンプを発動することができます。

というわけで、壁ジャンプについて話してきました。実装は簡単そうに見えますが、実は奥の深い動きです。
本作でも壁の反対方向に入力を入れ続けたとき、途中からグンと押されるような動きになっていて爽快感を損なっています。この点は改善する余地がありますね。
実は壁ジャンプの前にジャンプ自体語ることが多いのですが……。
かの有名な「桜井正博のゲーム作るには」のリンクを貼っておくのでぜひ見てください。

https://www.youtube.com/watch?v=zxOBCjqP8-Y

次回は「2022年8月、『Near The Sun』に新メンバー登場!」について話そうと思います。
それではこの辺で。

コメントはまだありません。