ひとことで
ジャンプの頂点付近だけ重力を弱めて、一番高いところで少しの間ふわっととどまらせる調整です。重力が一定のままだと、ジャンプは上りと下りが同じ形の放物線になり、頂点を一瞬で通り過ぎます。頂点でとどまる時間があると、空中で着地点を狙いやすくなり、ジャンプが「軽く、操作しやすく」感じられます。落ちるときの重力を強める調整と組み合わせて使うのが定番です。
ゲームでの使いどころ
- 2D アクション:頂点で少し浮かせて、敵を飛び越える・足場を狙う余裕を作る。落下は重く速くして、もたつきをなくす。
- 可変ジャンプ:ボタンを離したら上昇を打ち切る(重力を強める)ことで、押す長さでジャンプの高さを選べるようにする。
- 3D アクション:空中攻撃や空中での向き変えのために、頂点付近で少し時間を作る。
- 乗り物・特殊な移動:グライダーやパラシュートの開き始めなど、動きの「間」を作る場面にも同じ考え方を使える。
しくみ
縦の速度を 、基本の重力を として、状況に応じて重力に倍率を掛けます。
- 頂点付近( が小さい間)は にして、ゆっくり向きを変えさせます。
- 落下中は にして、すばやく降ろします。
- 上昇中に離したら にして、上昇を早めに打ち切ります(可変ジャンプ)。
あとは と、ふつうに速度を更新するだけです(半陰的オイラー法)。
跳ぶ高さ と頂点までの時間 を先に決め、そこから 、初速 を逆算すると、ゲームデザインとして扱いやすくなります。
実装のポイント
- ボタンを押している間だけ:頂点での滞空を、ボタンを押している間だけにすると、遊ぶ人が「浮かせるかどうか」を選べます。
- 落下速度の上限:落下中の重力を強めると速度がどんどん増えるので、上限を設けて、足場を見て反応できる速さにとどめます。
- 高さと時間で設計する:重力の数字を直接いじるより、「最高点の高さ」「頂点までの時間」「頂点での滞空時間」を決めてから数字を逆算する方が、調整しやすくなります。
- 固定タイムステップで:重力の倍率がフレームごとに切り替わるので、フレームレートが変わると軌道が少しずつ変わります。ジャンプの届く距離が大切なゲームでは、固定タイムステップで更新します。
つまずきやすい点
- ふわふわしすぎる:頂点の重力を弱めすぎたり、頂点付近の範囲を広げすぎたりすると、宙に浮いているようになり、かえって操作しにくくなります。
- 届く距離が変わる:重力の調整でジャンプの高さと距離が変わるので、ステージの穴や足場の間隔もあわせて調整が必要です。
- ほかの上向きの力との衝突:ばね床や風などで上向きに飛ばされたときにも「ボタンを離したら上昇を打ち切る」が効くと、飛び方が不自然に短くなります。ジャンプによる上昇かどうかを区別します。
デモで試すこと
- 3 人が同じ速さで走り、同時に跳びます。灰色は重力が一定、青は落ちるときだけ重く、黄色は頂点でふわっとして落ちるときは重い設定です。
- 緑の点は頂点付近にいる間の位置です。黄色は緑の点が長く並び、頂点付近にいる時間が灰色の約 2 倍になっていることを数値で確かめてください。
- 青と黄色は、落ちる側の曲線が上る側より急で、着地がきびきびしています。
- 「ボタンを押している長さ」を短くすると、青と黄色のジャンプが低くなります(可変ジャンプ)。灰色は重力が一定なので、押す長さに関係なく同じ高さです。