ジャンプの滞空時間を制御したい。
でも、どう計算すればいいのか分からない。
実は、滞空時間は、初速度と重力の関係で計算できるものです。
これらを理解すれば、意図した滞空時間のジャンプを実装できます。
この記事では、滞空時間を計算する方法として、ジャンプの高さと時間の関係式を見ていきましょう。
- 滞空時間の計算方法が分からない…
- ジャンプの高さと時間の関係が理解できていない。
- 意図した滞空時間のジャンプを実装したい。
✨ この記事でわかること
- 滞空時間の基本概念
- 初速度と重力の関係
- ジャンプの高さと滞空時間の計算式
- Unityでの滞空時間計算の実装方法
- 初心者でも理解できる物理計算の基礎
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます
滞空時間計算とは何か(ゲーム制作目線)

滞空時間計算は、ジャンプの滞空時間を、初速度と重力から計算する処理です。
滞空時間は、ジャンプの開始から着地までの時間です。
滞空時間の計算式は、以下のようになります。
- 滞空時間 = 2 × (初速度 / 重力)
これは、上昇時間と下降時間が等しいため、2倍になります。
初速度が大きいほど、長い滞空時間になります。
重力が大きいほど、短い滞空時間になります。
ゲームでの具体的な使い道

滞空時間計算が、ゲームでどう使われているか確認してみましょう。
ジャンプの調整
意図した滞空時間になるように、初速度を調整します。
滞空時間の計算式を使って、適切な初速度を求めます。
アニメーションの同期
ジャンプアニメーションを、滞空時間に合わせて調整します。
滞空時間を計算して、アニメーションの再生速度を調整します。
ゲームバランスの調整
ジャンプの滞空時間を調整して、ゲームバランスを調整します。
滞空時間が長すぎると難易度が下がり、短すぎると難易度が上がります。
滞空時間計算が使われる場面
- ジャンプの調整
- アニメーションの同期
- ゲームバランスの調整
- 物理演算の検証
作り方は分かった。
でも完成まで行けない人へ
当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。
※ まずは内容を見るだけでOK
ジャンプの高さ・速度・滞空時間の相関関係

ゲームにおけるジャンプは、物理学の「等加速度直線運動」として捉えることができます。
常に下向きにかかる重力によって、上昇したキャラクターが減速し、頂点で速度が0になり、再び加速しながら落下するというプロセスを辿ります。
この流れを分解して理解することで、計算式がぐっと身近になります。
上昇時間の計算
キャラクターが跳び上がってから、空中で一瞬止まる(速度が0になる)までの時間を計算します。
これは、初速度を重力加速度で割ることで求められます。
速度の公式は「速度 = 初速度 – 重力 × 時間」です。頂点では速度が0になるため、以下のようになります。
したがって、上昇時間 = 初速度 / 重力 と導き出せます。
下降時間の計算
最高到達点から地面に着地するまでの時間を考えます。
空気抵抗を無視する一般的なゲーム計算では、上昇にかかった時間と下降にかかる時間は等しくなります。
重力が常に一定(定数)であるため、ジャンプの軌道は頂点を軸とした左右対称の放物線を描くからです。
この「対称性」を知っておくと、計算が非常に楽になります。
滞空時間の計算(合計)
ジャンプの開始から着地までの合計時間が「滞空時間」です。先ほどの上昇時間を2倍にするだけで算出できます。
この式を見れば、「もっと長く浮かせていたいなら初速度を上げるか、重力を小さくすればいい」という調整の指針が明確になります。
ジャンプの「高さ」と滞空時間の関係
「特定の高さまでジャンプさせたい」という場合、滞空時間は高さ $h$ からも逆算可能です。
等加速度運動の公式から、最高到達点(高さ $h$)と時間の関係は以下の式で表せます。
これを滞空時間(全体の時間)として整理すると、滞空時間 = $\sqrt{\frac{8h}{g}}$ となります。
レベルデザインにおいて「この壁を越えられる高さのジャンプ」を設計する際に非常に役立つ数学的テクニックです。
⚠️ 重要なポイント
- 滞空時間は「初速度」と「重力」のバランスで決まる
- 上昇と下降の時間は等しく、滞空時間は上昇時間の2倍になる
- 「高さ」が決まれば、物理法則に従って自動的に滞空時間も決まる
- 数値を調整する際は、まずはこの基本式をベースに「重力の倍率」などをいじるのが定石
Unityで実装する際の注意点(代表例)

Unityで滞空時間計算をコードに落とし込む際、単に公式を写すだけでなく「Unityの物理挙動」に合わせる工夫が必要です。
特に重力の向きや単位に注意を払いましょう。
スクリプトでの滞空時間計算
まずは、現在のパラメーターから滞空時間をデバッグ表示する実装です。
ここで Mathf.Abs()(絶対値)を使用しているのは、Unityの重力設定が通常マイナスの値(下向き)で保持されているため、計算結果がマイナスになるのを防ぐためです。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class AirTimeCalculator : MonoBehaviour { public float jumpPower = 10f; // 初速度(上向きの力) public float gravity = -9.81f; // 重力加速度(通常はPhysics.gravity.y) // 滞空時間を計算するメソッド float CalculateAirTime(float initialVelocity, float g) { // 重力は大きさ(絶対値)として扱う return 2f * (initialVelocity / Mathf.Abs(g)); } void Start() { float airTime = CalculateAirTime(jumpPower, gravity); Debug.Log($"想定される滞空時間: {airTime} 秒"); } } |
目標の滞空時間から初速度を逆算する
「このジャンプは2秒で着地させたい」といったゲームデザイン優先の設計では、滞空時間から必要な初速度を逆算します。
このメソッドを使えば、重力設定を変更しても「ジャンプの時間心地」を一定に保つことができます。
|
1 2 3 4 5 6 |
float CalculateInitialVelocity(float targetAirTime, float g) { // 逆算式:v = (t * g) / 2 return (targetAirTime * Mathf.Abs(g)) / 2f; } |

まとめ

この記事では、滞空時間計算について見てきました。
重要なポイントをおさらいします。
重要なポイント:
- 滞空時間は、初速度と重力の関係で決まる
- 上昇時間と下降時間は等しい
- 滞空時間 = 2 × (初速度 / 重力)で計算できる
- 目標の滞空時間から、必要な初速度を逆算できる
- 滞空時間計算により、ジャンプのバランスを調整できる
滞空時間計算は、ジャンプのバランス調整に重要な技術です。
初速度と重力の関係を理解すれば、意図した滞空時間のジャンプを実装できます。
実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。
Unity入門の森では、滞空時間計算を含む物理演算を、実際のゲーム実装とともに体系的に学べます。
ぜひチェックしてみてください。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます





コメント