速度と加速度と位置、どう関係しているの?
物理演算では、これらの関係が重要になります。
速度・加速度・位置の関係は、物理演算の基礎となる計算です。
これらの関係を理解すれば、自然な動きを実現できます。
この記事では、速度・加速度・位置の関係を、Unity実装例とともに解説します。
- 速度と加速度と位置の関係が分からない…
- 物理演算の基礎計算方法が理解できない。
- 速度から位置を計算する方法を知りたい。
✨ この記事でわかること
- 速度・加速度・位置の基本的な関係
- 加速度から速度を計算する方法
- 速度から位置を計算する方法
- Unityでの物理演算の実装手順とコード例
- 初心者でも理解できる物理計算の基礎
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます
速度・加速度・位置の関係とは何か(ゲーム制作目線)

速度・加速度・位置の関係は、物理演算でオブジェクトの動きを計算するための基本となる関係式です。
加速度から速度を計算し、速度から位置を計算すれば、自然な動きを実現できます。
時間が経過すると、加速度が速度を変え、速度が位置を変えるという流れがあります。
速度・加速度・位置の関係の基本要素は、以下の3つです。
- 加速度→速度:加速度を時間で積分すると速度になる
- 速度→位置:速度を時間で積分すると位置になる
- 時間:Time.deltaTimeによる時間の経過
Unityでは、Time.deltaTimeを使った積分計算で実現します。
ゲームでの具体的な使い道

速度・加速度・位置の関係が、ゲームでどう使われているか確認してみましょう。
ジャンプと落下
重力による加速度で、速度が変化し、位置が更新されます。
加速度(重力)→速度(落下速度)→位置(落下距離)という流れです。
車の加速と減速
アクセルやブレーキによる加速度で、速度が変化します。
速度が変わると、位置も変わります。
物理演算の実装
Rigidbodyを使った物理演算でも、この関係が使われます。
力(加速度)→速度→位置という流れで、物理的に自然な動きができます。
プロジェクタイルの軌道
発射時の初速度と、重力による加速度で、軌道が決まります。
加速度が速度を変え、速度が位置を変えることで、放物線を描きます。
速度・加速度・位置の関係が使われる場面
- ジャンプと落下の物理計算
- 車の加速と減速の実装
- 物理演算でのオブジェクトの動き
- プロジェクタイルの軌道計算
作り方は分かった。
でも完成まで行けない人へ
当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。
※ まずは内容を見るだけでOK
【図解】物理演算の核!加速度・速度・位置が連鎖する仕組み

物理演算でオブジェクトを動かす際、最も大切なのは、これら3つの要素が「バケツリレー」のように繋がっていると理解することです。
「加速度が速度を変え、変化した速度がさらに位置を変える」という一方向のエネルギーの流れが、画面上の自然な動きを作り出します。
1. 加速度から速度へのエネルギー伝達
まず最初に起こるのが、加速度による速度の更新です。
加速度とは「1秒間にどれだけ速度を変化させるか」という指標です。アクセルを踏み込んだり、重力がかかったりする状態を指します。
- 速度の変化量:加速度に「経過時間(Time.deltaTime)」を掛けることで、そのフレームで増減した速度を求めます。
- 計算式:$v = v_0 + a \times t$(新しい速度 = 元の速度 + 加速度 × 時間)
- Unity実装:
velocity += acceleration * Time.deltaTime;
2. 速度から位置への移動の反映
次に、更新された速度を使って、実際のオブジェクトの座標(位置)を動かします。
速度とは「1秒間にどれだけ移動するか」という指標であり、これが確定して初めてキャラクターが画面上を移動します。
- 位置の変化量:速度に「経過時間」を掛けることで、そのフレームで進んだ距離を算出します。
- 計算式:$x = x_0 + v \times t$(新しい位置 = 元の位置 + 速度 × 時間)
- Unity実装:
transform.position += velocity * Time.deltaTime;
3. 毎フレーム繰り返される「積分」のサイクル
ゲームプログラミングにおける物理演算の正体は、この「加速度 → 速度 → 位置」という更新を毎秒数十回(Update関数)繰り返すことにあります。
これを数学の世界では「数値積分」と呼びます。
UnityのUpdate関数の中でこの計算を行うことで、私たちは滑らかな放物線や、リアルな加速・減速をシミュレーションすることができるのです。
【実践例】重力による落下をシミュレーションする
この仕組みを最もシンプルに実感できるのが「重力」の実装です。
重力という一定の「加速度」が、どのように位置を変えていくのかを見てみましょう。
- STEP1(加速度):常に下向きの力(重力加速度)を用意する。
- STEP2(速度の更新):
velocity.y += gravity * Time.deltaTime;で、毎フレーム下向きに加速させる。 - STEP3(位置の更新):
transform.position += velocity * Time.deltaTime;で、加速した速度分だけ落下させる。
- 連鎖が命:加速度は直接「位置」を変えるのではなく、必ず「速度」を経由して位置を変えます。
- 時間の魔法:
Time.deltaTimeを掛けることで、フレームレートが変動しても同じ速度で動くようになります。 - 更新順序:基本的には「加速度で速度を更新」してから「速度で位置を更新」する順序が、物理法則に忠実な動きになります。
Unityで実装する際の注意点(代表例)

Unityで速度・加速度・位置の関係を実装する場合の注意点を見ていきましょう。
基本的な物理計算
加速度から速度、速度から位置を計算する基本実装です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
public class PhysicsMovement : MonoBehaviour { private Vector3 velocity = Vector3.zero; // 速度 private Vector3 acceleration = Vector3.zero; // 加速度 void Update() { // 加速度から速度を更新 velocity += acceleration * Time.deltaTime; // 速度から位置を更新 transform.position += velocity * Time.deltaTime; } // 加速度を設定 public void SetAcceleration(Vector3 accel) { acceleration = accel; } } |
重力による落下
重力加速度を使った落下の実装です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class GravityFall : MonoBehaviour { private Vector3 velocity = Vector3.zero; public float gravity = -9.81f; // 重力加速度 void Update() { // 重力による加速度を適用 Vector3 acceleration = new Vector3(0, gravity, 0); // 速度を更新 velocity += acceleration * Time.deltaTime; // 位置を更新 transform.position += velocity * Time.deltaTime; } } |
ジャンプの実装
ジャンプの初速度と、重力による落下を組み合わせた実装です。
|
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 |
public class Jump : MonoBehaviour { private Vector3 velocity = Vector3.zero; public float gravity = -9.81f; public float jumpSpeed = 5f; // ジャンプの初速度 void Update() { // ジャンプ入力 if (Input.GetKeyDown(KeyCode.Space)) { velocity.y = jumpSpeed; // 初速度を設定 } // 重力による加速度 Vector3 acceleration = new Vector3(0, gravity, 0); velocity += acceleration * 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; // 着地時に速度をリセット } } } |
車の加速と減速
加速度による加速と減速の実装です。
|
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 44 45 46 47 |
public class CarMovement : MonoBehaviour { private Vector3 velocity = Vector3.zero; public float acceleration = 5f; // 加速度 public float maxSpeed = 10f; // 最大速度 public float friction = 2f; // 摩擦(減速) void Update() { Vector3 accel = Vector3.zero; // アクセル入力 if (Input.GetKey(KeyCode.W)) { accel = transform.forward * acceleration; } // ブレーキ入力 if (Input.GetKey(KeyCode.S)) { accel = -transform.forward * acceleration; } // 摩擦による減速 if (velocity.magnitude > 0.1f) { accel -= velocity.normalized * friction; } else { velocity = Vector3.zero; } // 速度を更新 velocity += accel * Time.deltaTime; // 最大速度で制限 if (velocity.magnitude > maxSpeed) { velocity = velocity.normalized * maxSpeed; } // 位置を更新 transform.position += velocity * Time.deltaTime; } } |
Rigidbodyを使った物理演算
Unityの物理演算エンジンを使った実装です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public class RigidbodyPhysics : MonoBehaviour { private Rigidbody rb; void Start() { rb = GetComponent(); } void Update() { // 力を加える(加速度に相当) if (Input.GetKey(KeyCode.W)) { rb.AddForce(transform.forward * 10f); } // Unityの物理エンジンが、加速度→速度→位置を自動計算 // Updateでは、力を加えるだけでOK } } |
プロジェクタイルの軌道
発射時の初速度と、重力による放物線の実装です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
public class Projectile : MonoBehaviour { private Vector3 velocity; public float gravity = -9.81f; public void Launch(Vector3 initialVelocity) { velocity = initialVelocity; // 初速度を設定 } void Update() { // 重力による加速度 Vector3 acceleration = new Vector3(0, gravity, 0); // 速度を更新 velocity += acceleration * Time.deltaTime; // 位置を更新 transform.position += velocity * Time.deltaTime; } } |

まとめ

この記事では、速度・加速度・位置の関係について見てきました。
重要なポイントをおさらいします。
重要なポイント:
- 加速度は速度を変え、速度は位置を変える
- Time.deltaTimeを使った積分計算で実現
- 毎フレーム、加速度→速度→位置の順に更新
- 物理演算の基礎となる重要な関係式
- UnityのRigidbodyは、この計算を自動的に行う
速度・加速度・位置の関係は、ゲーム開発で重要な技術です。
ジャンプや落下、物理演算など、様々な場面で活用できますね。
物理法則に基づいた計算を行うことで、自然な動きを実現できます。
実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。
Unity入門の森では、速度・加速度・位置を含む物理演算を、実際のゲーム実装とともに体系的に学べます。
ぜひチェックしてみてください。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます





コメント