アクションゲームのジャンプ処理を理解したい。でも、数式が難しそうで、どう調整すればいいか分からない。
多くの学生が最初に感じるのが、この疑問です。
実は、ジャンプ処理の数式を理解すれば、操作感を自由に調整できます。
この記事では、アクションゲームのジャンプ処理完全解説として、高さ・重力・操作感を調整する数式ガイドを提供します。
✨ この記事でわかること
- ジャンプ処理の基本数式
- マリオ型とロックマン型の違い
- 高さ・重力・操作感の調整方法
- Unityでの実装例

ジャンプ処理の数式を理解すれば、操作感を自由に調整できます。まずは、基本の数式から始めましょう。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
ジャンプ処理の基本数式

ジャンプ処理は、一見むずかしそうに見えますが、やっていることは「どれくらいの勢いで上に飛ばすか」を計算しているだけです。
まずは、ジャンプに関係する基本的な数式を見てみましょう。
- 初速度:v0 = √(2 × g × h)
- 最高点までの時間:t = v0 / g
- 最高点の高さ:h = v0² / (2 × g)
ここで、
- g は「重力の強さ」
- h は「ジャンプさせたい高さ」
を表しています。
ポイントは、「先にジャンプの高さを決めてから、必要な初速度を逆算している」という点です。
たとえば、「キャラを5mジャンプさせたい」と決めた場合、その高さに到達するために必要な上向きの初速度がv0 = √(2 × g × h) という式で求まります。
つまりこの数式は、
- ジャンプの高さを感覚で決める
- その高さに届くスピードを自動で計算する
ためのものです。
数式を覚える必要はありません。
「高さを決めれば、あとは式が勝手に計算してくれる」と理解できれば十分です。
マリオ型とロックマン型の違い

アクションゲームのジャンプには、主に2つのタイプがあります。
| 項目 | マリオ型 | ロックマン型 |
|---|---|---|
| ジャンプの高さ | 可変(ボタン長押し) | 固定 |
| 入力の影響 | 空中でも入力時間が影響する | ジャンプ開始時のみ |
| 重力のかかり方 | 上昇中は弱く、落下時は強い | 常に一定 |
| 操作感 | 柔らかい・浮遊感がある | 硬い・キビキビしている |
マリオ型のジャンプは、「ボタンを押している間は上に伸びる」ように制御されています。
一方、ロックマン型のジャンプは、ジャンプした瞬間に高さが決まり、途中でボタンを離しても挙動は変わりません。
そのため、
・初心者向けに実装が簡単なのはロックマン型
・操作感を細かく作り込みたい場合はマリオ型
と考えると分かりやすいです。

マリオ型とロックマン型は、それぞれ特徴が異なります。ゲームのジャンルに応じて選びましょう。
高さ・重力・操作感の調整方法

ジャンプの高さ・重力・操作感を調整する方法を紹介します。
高さの調整
ジャンプの高さは、初速度を変えることで調整できます。
|
1 2 3 |
float jumpHeight = 5f; float jumpForce = Mathf.Sqrt(jumpHeight * -2f * Physics.gravity.y); |
このコードで、ジャンプの高さが調整できます。
jumpHeightの値を変えると、ジャンプの高さが変わります。
値を大きくすると、ふわっとしたジャンプに、小さくすると、低く素早いジャンプになります。
重力の調整
重力は、GravityScaleを変えることで調整できます。
|
1 2 |
rb.gravityScale = 1.5f; // 重力を1.5倍に |
このコードで、重力の強さが調整できます。
値が大きいほど、落下速度が速くなります。
重力を強くすると、ジャンプ後すぐに落下するため、操作感が引き締まります。
操作感の調整
操作感は、初速度と重力のバランスで調整できます。
初速度を大きくすると、ジャンプが高くなります。
重力を大きくすると、落下速度が速くなります。
実際に動かしながら、感覚的に「気持ちいい」と感じる値を見つけましょう。
たとえば、
・ジャンプを高く、ふわっとさせたい場合は
jumpHeight を大きくし、gravityScale を小さめにします。
・ジャンプを低く、素早くしたい場合は
jumpHeight を小さくし、gravityScale を大きめにします。
この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 33 34 35 36 37 38 39 40 41 42 43 |
using UnityEngine; public class JumpController : MonoBehaviour { // ジャンプの高さ(数値を変えるとジャンプの高さが変わる) [SerializeField] private float jumpHeight = 5f; // 重力の強さ(大きいほど落下が速くなる) [SerializeField] private float gravityScale = 1.5f; private Rigidbody2D rb; private bool isGrounded; void Start() { // Rigidbody2D を取得し、重力を設定する rb = GetComponent(); rb.gravityScale = gravityScale; } void Update() { // 足元に Ray を飛ばして、地面に接地しているか判定する isGrounded = Physics2D.Raycast( transform.position, Vector2.down, 0.6f, LayerMask.GetMask("Ground") ); // 地面にいて、スペースキーを押したらジャンプする if (Input.GetKeyDown(KeyCode.Space) && isGrounded) { // 指定した高さまでジャンプするための初速度を計算 float jumpForce = Mathf.Sqrt(jumpHeight * -2f * Physics.gravity.y); // 上方向に速度を与えてジャンプさせる rb.velocity = new Vector2(rb.velocity.x, jumpForce); } } } |
このコードで、高さと重力を調整できるジャンプが実装できます。
jumpHeightとgravityScaleの値を変えると、操作感が調整できます。
初心者がつまずきやすいポイント
- Ground レイヤーを設定しておらず、接地判定が常に false になる
- Ray の距離が短すぎて、地面に反応しない
- jumpHeight を変えても、数値の変化が小さくて違いが分からない
- 重力を強くしすぎて、ジャンプが一瞬で終わってしまう

これらは誰でも一度は通るポイントです。
ひとつずつ確認しながら調整すれば、問題なくジャンプ処理を実装できます。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
実践的なジャンプ処理を学ぶには

ここまで、アクションゲームのジャンプ処理完全解説として、高さ・重力・操作感を調整する数式ガイドを提供してきました。
ただし、実際のゲーム制作では、さらに多くの要素が必要になります。
アニメーション、エフェクト、UI、サウンドなど、全体を体系的に学ぶには、専門の講座が効率的です。
Unity入門の森では、アクションゲームの作り方を、基礎から完成まで丁寧に解説しています。
コードの意味から、なぜその実装方法を選ぶのかまで、しっかり理解できる内容になっています。
アクションゲーム制作に特化した講座なら、効率的にスキルアップできます。
ゲーム制作でスキルを上げたい方は、ぜひチェックしてみてください。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
まとめ

アクションゲームのジャンプ処理完全解説として、高さ・重力・操作感を調整する数式ガイドを提供しました。
要点のまとめ
- ジャンプ処理の基本数式を理解する
- マリオ型とロックマン型の違いを理解する
- 高さ・重力・操作感を調整する
- 実際に動かしながら、感覚的に調整する
基本を押さえれば、あとは応用していくだけです。
まずは、ここで紹介したコードを実際に動かしてみてください。
動かしながら理解を深めていくのが、上達への近道です。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる



コメント