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

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

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

ジャンプの挙動をプログラムで制御するためには、単にキャラクターを上に動かすだけでなく、上昇から下降へと移り変わる「力のバランス」を理解する必要があります。
ジャンプの実態は、物理学で言うところの「鉛直投げ上げ運動」(横移動を含めば放物線運動)そのものです。
1. ジャンプを発生させる「初速度」と「重力」の関係
ジャンプが始まる瞬間、キャラクターには上方向への瞬間的な速度、つまり「初速度」が与えられます。
しかし、地球上(あるいはゲーム世界)には常に下方向へ引っ張る「重力加速度」が存在します。
この2つの要素がぶつかり合うことで、ジャンプの軌道が作られます。
具体的には、ジャンプした瞬間は初速度が勝っているため上昇しますが、重力によって毎フレーム少しずつ速度が削られていきます。
やがて上昇速度がゼロになった瞬間、キャラクターは最高点に達し、今度は下方向への速度が増していく「落下」へと転じるのです。
2. なぜジャンプの高さは初速度で決まるのか
ゲームデザインにおいて「このジャンプ台に乗ったら5メートルの高さまで飛ばしたい」といった調整が必要になることがあります。
このとき、適当な数値を入力するのではなく、数学的に初速度を逆算することが可能です。
物理学のエネルギー保存則、あるいは等加速度直線運動の公式を用いると、ジャンプの高さ($h$)と重力($g$)、必要な初速度($v$)の関係は以下のようになります。
このロジックを理解しておけば、どんな高さのジャンプでも思い通りに設計できます。
ジャンプの高さは「初速度の2乗」に比例します。つまり、高さを2倍にしたい場合、初速度を2倍にするのではなく、$\sqrt{2}$倍(約1.41倍)にするのが数学的な正解です。
3. 滞空時間を支配する「対称性」の仕組み
滞空時間とは、ジャンプしてから地面に着地するまでの全時間のことです。
実は、放物線運動には「上昇にかかる時間と、下降にかかる時間は等しい」という美しい対称性があります。
滞空時間を計算する際は、まず「初速度が重力によってゼロになるまでの時間」を求めます。
それを2倍にするだけで、正確な滞空時間が算出できます。
滞空時間が長すぎると「ふわふわしたジャンプ」になり、短すぎると「重いジャンプ」に感じられるため、この計算はゲームの「手触り」を左右する非常に重要な要素です。
💡 実装に役立つロジックのまとめ
- 放物線の正体: 上方向の「初速度」を、下方向の「重力」が毎秒減算していくプロセス。
- 高さの制御: 初速度を調整することで、物理法則に基づいた正確な高さ(最高到達点)を決められる。
- 滞空時間の設計: 初速度を重力加速度で割ることで、上昇時間を割り出し、その往復分が滞空時間となる。
- 自然な落下: 速度に対して常に重力を加算し続けることで、加速しながら落下するリアリティが生まれる。
Unityで実装する際の注意点(代表例)

Unityでジャンプ実装をする場合の注意点を見ていきましょう。
基本的なジャンプ実装
初速度を与えてジャンプさせる実装です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
public class JumpController : MonoBehaviour { public float jumpForce = 10f; public float gravity = 9.81f; private Vector3 velocity = Vector3.zero; private bool isGrounded = true; void Update() { // ジャンプ入力 if (Input.GetKeyDown(KeyCode.Space) && isGrounded) { velocity.y = jumpForce; // 初速度を与える isGrounded = false; } // 重力を加える velocity.y -= gravity * Time.deltaTime; // 位置を更新 transform.position += velocity * Time.deltaTime; // 地面との衝突判定 if (transform.position.y <= 0) { transform.position = new Vector3(transform.position.x, 0, transform.position.z); velocity.y = 0; isGrounded = true; } } } |
Rigidbodyを使ったジャンプ
Unityの物理エンジンを使ったジャンプ実装です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public class RigidbodyJump : MonoBehaviour { public float jumpForce = 10f; private Rigidbody rb; void Start() { rb = GetComponent<Rigidbody>(); } void Update() { if (Input.GetKeyDown(KeyCode.Space) && IsGrounded()) { rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse); } } bool IsGrounded() { return Physics.Raycast(transform.position, Vector3.down, 0.1f); } } |
ジャンプの高さを制御する
ジャンプの高さを調整する実装です。
|
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; |
滞空時間を計算する
滞空時間を計算する実装です。
|
1 2 3 4 5 6 7 8 |
// 滞空時間を計算 float jumpHeight = 5f; float gravity = 9.81f; float jumpVelocity = Mathf.Sqrt(2f * gravity * jumpHeight); // 滞空時間 = 上昇時間 + 下降時間 float airTime = (2f * jumpVelocity) / gravity; |
実装のコツ
Time.deltaTimeを使って、フレームレートに依存しない実装を心がけましょう。
物理エンジンを使う場合は、Rigidbodyコンポーネントを活用すれば、多くの計算が自動化されます。

まとめ

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





コメント