キャラクターをジャンプさせたいけど、どう計算すればいいのか分からない。
重力と初速度の関係がよく分からない。
実は、ジャンプの計算は、重力と初速度の組み合わせで放物線運動を実現することがポイントです。
これらを理解すれば、自然なジャンプを実装できます。
この記事では、ジャンプの計算として、重力と初速度で実現する放物線運動を見ていきましょう。
- ジャンプの計算方法が分からない…
- 重力と初速度の関係が理解できていない。
- 放物線運動を実装したい。
✨ この記事でわかること
- ジャンプ計算の基本となる放物線運動
- 重力と初速度の関係
- ジャンプの高さと時間の計算
- Unityでのジャンプ計算の実装方法
- 初心者でも理解できるジャンプの計算
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます
ジャンプ計算とは何か(ゲーム制作目線)

ジャンプの計算は、重力と初速度の組み合わせで放物線運動を実現する計算です。
ジャンプの瞬間に、初速度を与えて上方向に移動させます。
その後、重力が下方向に働くため、放物線を描いて落下します。
ジャンプの高さは、初速度によって決まります。
初速度が大きいほど、高いジャンプになります。
滞空時間も、初速度と重力の関係で決まります。
これらを理解すれば、意図した高さや滞空時間のジャンプを実装できます。
ゲームでの具体的な使い道

ジャンプ計算が、ゲームでどう使われているか確認してみましょう。
基本的なジャンプ
キャラクターがジャンプボタンを押したとき、初速度を与えて上方向に移動させます。
重力が下方向に働くため、放物線を描いて落下します。
ジャンプの高さの制御
初速度を調整すれば、ジャンプの高さを制御できます。
例えば、高いジャンプには大きい初速度、低いジャンプには小さい初速度を与えます。
滞空時間の制御
初速度と重力の関係で、滞空時間が決まります。
初速度が大きいほど、長く滞空します。
複数のジャンプ
二段ジャンプや三段ジャンプでは、空中でも初速度を与えます。
現在の速度に加算する形で初速度を与えることで、追加のジャンプを実現します。
ジャンプ計算で使う要素
- 初速度:ジャンプの瞬間に与える上方向の速度
- 重力:下方向に働く加速度
- 放物線運動:初速度と重力の組み合わせで発生
- 滞空時間:初速度と重力の関係で決まる
作り方は分かった。
でも完成まで行けない人へ
当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。
※ まずは内容を見るだけでOK
ジャンプの挙動を数学的に紐解く:重力と速度の仕組み

ゲームにおけるジャンプは、単なる上下運動ではありません。
物理学における「放物線運動」をシミュレートすることで、プレイヤーが直感的に「自然だ」と感じる動きになります。
この動きを制御する2つの主役が、上方向への勢いである「初速度」と、常に下向きに引き続ける「重力」です。
放物線運動を生み出す速度の変化
キャラクターが地面を蹴った瞬間、大きな「上向きの初速度」が与えられます。しかし、空中では常に「重力(加速度)」が下向きに働いているため、上向きの速度は毎フレーム少しずつ削られていきます。
やがて速度が0になった瞬間がジャンプの頂点であり、その後は速度がマイナス(下向き)に転じることで落下が始まります。
これが放物線運動の正体です。
速度と位置の更新プロセス
プログラム内部では、この物理現象を「積分」の考え方で処理しています。
具体的には、以下のステップを毎フレーム繰り返すことでキャラクターの位置を決定します。
- 速度の更新: 現在の速度に「重力 × 時間」を加算して、新しい速度を出す。
- 位置の更新: 現在の位置に「速度 × 時間」を加算して、新しい座標を決める。
このシンプルな足し算の繰り返しが、滑らかな曲線の動きを作り出すのです。
理想のジャンプをデザインする「逆算」の考え方
「ジャンプボタンを押したときに、どれくらいの初速度を与えればいいのか?」という悩みは、数学で解決できます。
例えば「3メートルの壁を飛び越えたい」という目的がある場合、物理公式($v^2 = 2gh$)を逆算することで、必要な初速度を導き出すことが可能です。
これにより、勘に頼らない正確なレベルデザインが可能になります。
⚠️ 計算の重要ポイント
- 放物線の核心: 重力と初速度が常に干渉し合うことで曲線が生まれる。
- 頂点の定義: 上向きの速度がちょうど「0」になった場所が最高到達点。
- 制御のコツ: 初速度をいじれば「高さ」が変わり、重力をいじれば「滞空時間」が変わる。
Unityでの実装レシピ:計算式から物理エンジンまで

理論を理解したら、次はUnityでの実装です。
Unityには便利な物理エンジンがありますが、あえて自分で計算することで、より細かなカスタマイズ(ふわっとしたジャンプなど)が可能になります。
ここでは、自作計算とRigidbody活用の両面を見ていきましょう。
座標更新によるマニュアル・ジャンプ実装
物理エンジンに頼らず、Transformを直接操作してジャンプさせる方法です。
この方法は、格闘ゲームや精密なアクションゲームなど、物理挙動に「嘘」をつきたい(制御を完全に掌握したい)場合に非常に有効です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public class JumpCalculation : MonoBehaviour { public float jumpForce = 10f; // 初速度 public float gravity = 9.81f; // 重力加速度 private Vector3 velocity = Vector3.zero; void Update() { // ジャンプ入力(接地判定は省略) if (Input.GetKeyDown(KeyCode.Space)) { velocity.y = jumpForce; } // 重力による速度の減衰(加速度を速度に反映) velocity.y -= gravity * Time.deltaTime; // 速度を位置に反映 transform.position += velocity * Time.deltaTime; } } |
「高さ」から必要な初速度を自動計算する
ゲーム制作現場で最も役立つのが、この逆算式です。
「ジャンプ力」という曖昧な数値ではなく、「高さ5メートル」という直感的な値から初速度を決定します。
数学的には $v = \sqrt{2gh}$ という式を用います。
|
1 2 3 4 5 6 7 8 9 10 |
// 必要な変数の準備 float jumpHeight = 5f; // 到達したい高さ float gravity = 9.81f; // 物理公式に基づいた初速度の計算 float jumpVelocity = Mathf.Sqrt(2f * gravity * jumpHeight); // 計算した速度を適用 velocity.y = jumpVelocity; |
滞空時間をコントロールする
滞空時間(ジャンプしてから着地するまでの時間)も、初速度と重力の比率で決まります。
上昇時間と下降時間は対称になるため、「頂点に達するまでの時間」を2倍することで求められます。
|
1 2 3 4 |
// 滞空時間 = (2 * 初速度) / 重力 float airTime = (2f * jumpVelocity) / gravity; Debug.Log("着地までの予想時間: " + airTime); |
Rigidbody(物理エンジン)を賢く活用する
Unityの標準的な物理挙動に乗せたい場合は、Rigidbodyコンポーネントを使用します。
このとき、瞬間的な力を加えるために ForceMode.Impulse を指定するのがポイントです。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class RigidbodyJump : MonoBehaviour { public float jumpForce = 10f; private Rigidbody rb; void Start() => rb = GetComponent<Rigidbody>(); void Update() { if (Input.GetKeyDown(KeyCode.Space)) { // 瞬間的に上向きの力(衝撃)を加える rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse); } } } |
物理エンジンを使用する際は、Time.deltaTime の計算をシステム側が自動で行ってくれるため、実装が非常にシンプルになります。
ただし、複雑な重力制御を行いたい場合は、マニュアル実装の知識が必要不可欠です。

まとめ

この記事では、ジャンプの計算について見てきました。
重要なポイントをおさらいします。
重要なポイント:
- ジャンプ計算は、重力と初速度の組み合わせで放物線運動を実現する
- 初速度を調整すれば、ジャンプの高さを制御できる
- 滞空時間は、初速度と重力の関係で決まる
- 速度に重力を加算すれば、落下を実現する
- Time.deltaTimeを使って、フレームレートに依存しない実装を心がける
ジャンプ計算は、重力と初速度の組み合わせで放物線運動を実現します。
これらを理解すれば、自然なジャンプを実装できます。
物理エンジンを活用すれば、より自然なジャンプを実現できます。
実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。
Unity入門の森では、ジャンプ計算を含む物理演算を、実際のゲーム実装とともに体系的に学べます。
ぜひチェックしてみてください。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます





コメント