カメラ・操作感

頂点付近の滞空調整

Jump Apex Hang Time

ジャンプの頂点付近で滞空時間を長くする。

7 / 10

インタラクティブデモ

デモを準備しています…

頂点付近の滞空調整

ドラッグで視点を回転、Ctrl(⌘)+ スクロールでズーム。タッチ操作は 2 本指です。

ひとことで

ジャンプの頂点付近だけ重力を弱めて、一番高いところで少しの間ふわっととどまらせる調整です。重力が一定のままだと、ジャンプは上りと下りが同じ形の放物線になり、頂点を一瞬で通り過ぎます。頂点でとどまる時間があると、空中で着地点を狙いやすくなり、ジャンプが「軽く、操作しやすく」感じられます。落ちるときの重力を強める調整と組み合わせて使うのが定番です。

ゲームでの使いどころ

  • 2D アクション:頂点で少し浮かせて、敵を飛び越える・足場を狙う余裕を作る。落下は重く速くして、もたつきをなくす。
  • 可変ジャンプ:ボタンを離したら上昇を打ち切る(重力を強める)ことで、押す長さでジャンプの高さを選べるようにする。
  • 3D アクション:空中攻撃や空中での向き変えのために、頂点付近で少し時間を作る。
  • 乗り物・特殊な移動:グライダーやパラシュートの開き始めなど、動きの「間」を作る場面にも同じ考え方を使える。

しくみ

縦の速度を vyv_y、基本の重力を gg として、状況に応じて重力に倍率を掛けます。

geff={g⋅mapex(∣vy∣<vth かつボタンを押している)g⋅mrelease(vy>0 かつボタンを離した)g⋅mfall(vy<0)g(それ以外)g_{\text{eff}} = \begin{cases} g \cdot m_{\text{apex}} & \quad (|v_y| < v_{\text{th}} \ \text{かつボタンを押している})\\ g \cdot m_{\text{release}} & \quad (v_y > 0 \ \text{かつボタンを離した})\\ g \cdot m_{\text{fall}} & \quad (v_y < 0)\\ g & \quad (\text{それ以外}) \end{cases}
  • 頂点付近(∣vy∣|v_y| が小さい間)は mapex<1m_{\text{apex}} < 1 にして、ゆっくり向きを変えさせます。
  • 落下中は mfall>1m_{\text{fall}} > 1 にして、すばやく降ろします。
  • 上昇中に離したら mrelease>1m_{\text{release}} > 1 にして、上昇を早めに打ち切ります(可変ジャンプ)。

あとは vy←vy−geff Δtv_y \leftarrow v_y - g_{\text{eff}}\,\Delta t と、ふつうに速度を更新するだけです(半陰的オイラー法)。

跳ぶ高さ HH と頂点までの時間 tapext_{\text{apex}} を先に決め、そこから g=2H/tapex2g = 2H / t_{\text{apex}}^2、初速 v0=2H/tapexv_0 = 2H / t_{\text{apex}} を逆算すると、ゲームデザインとして扱いやすくなります。

実装のポイント

  • ボタンを押している間だけ:頂点での滞空を、ボタンを押している間だけにすると、遊ぶ人が「浮かせるかどうか」を選べます。
  • 落下速度の上限:落下中の重力を強めると速度がどんどん増えるので、上限を設けて、足場を見て反応できる速さにとどめます。
  • 高さと時間で設計する:重力の数字を直接いじるより、「最高点の高さ」「頂点までの時間」「頂点での滞空時間」を決めてから数字を逆算する方が、調整しやすくなります。
  • 固定タイムステップで:重力の倍率がフレームごとに切り替わるので、フレームレートが変わると軌道が少しずつ変わります。ジャンプの届く距離が大切なゲームでは、固定タイムステップで更新します。

つまずきやすい点

  • ふわふわしすぎる:頂点の重力を弱めすぎたり、頂点付近の範囲を広げすぎたりすると、宙に浮いているようになり、かえって操作しにくくなります。
  • 届く距離が変わる:重力の調整でジャンプの高さと距離が変わるので、ステージの穴や足場の間隔もあわせて調整が必要です。
  • ほかの上向きの力との衝突:ばね床や風などで上向きに飛ばされたときにも「ボタンを離したら上昇を打ち切る」が効くと、飛び方が不自然に短くなります。ジャンプによる上昇かどうかを区別します。

デモで試すこと

  1. 3 人が同じ速さで走り、同時に跳びます。灰色は重力が一定、青は落ちるときだけ重く、黄色は頂点でふわっとして落ちるときは重い設定です。
  2. 緑の点は頂点付近にいる間の位置です。黄色は緑の点が長く並び、頂点付近にいる時間が灰色の約 2 倍になっていることを数値で確かめてください。
  3. 青と黄色は、落ちる側の曲線が上る側より急で、着地がきびきびしています。
  4. 「ボタンを押している長さ」を短くすると、青と黄色のジャンプが低くなります(可変ジャンプ)。灰色は重力が一定なので、押す長さに関係なく同じ高さです。

参考資料

Unity Cinemachine Position Composer ↗

分野全体の資料で、この項目を直接扱っているとは限りません。