キャラクターを加速しながら動かしたい。
でも、どう計算すればいいのか分からない。
実は、等加速度運動は、加速度を使って速度を更新することで実現できるものです。
これらを理解すれば、物理法則に基づいた自然な移動を実装できます。
この記事では、等加速度運動をゲームで扱う考え方として、物理法則に基づく移動を見ていきましょう。
- 等加速度運動の実装方法が分からない…
- 加速度を使った移動の計算方法が理解できていない。
- 物理法則に基づいた移動を実装したい。
✨ この記事でわかること
- 等加速度運動の基本概念
- 加速度と速度の関係
- 等加速度運動の実装方法
- Unityでの等加速度運動の実装手順
- 初心者でも理解できる物理演算の基礎
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます
等加速度運動とは何か(ゲーム制作目線)

等加速度運動は、一定の加速度が働く運動です。
速度が一定の割合で変化する運動で、加速度が一定であることが特徴です。
等加速度運動の基本要素は、以下のものです。
- 加速度:速度の変化率(一定)
- 速度:時間とともに変化する
- 位置:速度を積分した結果
Unityでは、加速度を使って速度を更新し、位置を更新すれば、等加速度運動を実現できます。
ゲームでの具体的な使い道

等加速度運動が、ゲームでどう使われているか確認してみましょう。
ジャンプと落下
ジャンプや落下に、重力という加速度が働きます。
重力加速度を加えることで、自然な落下を実現します。
車の加速
レースゲームで車を加速させる場合、加速度を使います。
入力に応じて加速度を変更し、速度を更新します。
プロジェクトの動き
弾やミサイルなど、プロジェクトileの動きに加速度を使います。
一定の加速度を与えることで、物理的な動きを実現します。
等加速度運動が使われる場面
- ジャンプと落下
- 車の加速
- プロジェクトileの動き
- パーティクルの動き
作り方は分かった。
でも完成まで行けない人へ
当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。
※ まずは内容を見るだけでOK
物理をコードに変換!等加速度運動を支える「3ステップ」のアルゴリズム

ゲーム内で「自然な加速」を表現するためには、単に座標を動かすのではなく、物理法則に基づいた計算手順(アルゴリズム)に従う必要があります。
一見難しそうですが、実は以下の「3つのステップ」を毎フレーム繰り返しているだけなのです。
1. 加速度の設定:動きの「素」を決める
まずは、その物体にどれくらいの勢いを与えるかという「加速度」を決定します。
重力なら下向きの固定値、車のアクセルなら入力に応じた値になります。
この加速度が「一定」である状態が、いわゆる等加速度運動のスタート地点です。
2. 速度の更新:加速度を「勢い」に蓄積する
次に、決めた加速度を使って「現在の速度」を更新します。
プログラミング的には、現在の速度に対して「加速度 × 時間」を足し合わせる作業です。
これにより、時間が経つほど速度がどんどん増していく(あるいは減っていく)表現が可能になります。
3. 位置の更新:変化した速度で「座標」を動かす
最後に、更新された「最新の速度」を使って、キャラクターの座標(位置)を動かします。
速度に時間をかけた分だけ、現在の位置に加算します。
ステップ2で速度が変化しているため、同じ1秒間でも「移動距離」が徐々に変わっていく、リアルな挙動が生まれます。
等加速度運動が「自然」に見える理由
この仕組みの最大の特徴は、「速度が一定の割合で変化し続ける」ことにあります。
急にパッと動くのではなく、徐々にスピードに乗り、滑らかに加速していく様子は、プレイヤーに「重さ」や「力」を感じさせることができます。
これは、Unityなどのゲームエンジン内部で行われている物理演算(積分計算)の最も基礎となる考え方です。
💡 実装に役立つ重要ポイント
- 等加速度運動は「加速度 → 速度 → 位置」というドミノ倒しのような連鎖で動く。
- 速度は「加速度 × 時間」で毎フレーム更新し続ける必要がある。
- 位置は「その瞬間の速度 × 時間」で更新することで、滑らかな移動になる。
- 「加速度が一定」だからこそ、予測可能でコントロールしやすい自然な動きが作れる。
Unityで実装する際の注意点(代表例)

Unityで等加速度運動を実装する場合の注意点を見ていきましょう。
基本的な等加速度運動
加速度を使って速度を更新し、位置を更新します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class UniformAcceleration : MonoBehaviour { public Vector3 acceleration = new Vector3(0, -9.81f, 0); // 重力加速度 private Vector3 velocity = Vector3.zero; void Update() { // 速度を更新 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 |
void Update() { Vector3 accel = Vector3.zero; if (Input.GetKey(KeyCode.UpArrow)) { accel.z = 10f; // 前方に加速 } // 速度を更新 velocity += accel * Time.deltaTime; // 位置を更新 transform.position += velocity * Time.deltaTime; } |

まとめ

この記事では、等加速度運動について見てきました。
重要なポイントをおさらいします。
重要なポイント:
- 等加速度運動は、一定の加速度が働く運動
- 速度 = 加速度 × 時間で更新する
- 位置 = 速度 × 時間で更新する
- 加速度が一定であることが特徴
- 等加速度運動により、物理法則に基づいた自然な動きを実現できる
等加速度運動は、物理法則に基づいた自然な動きを実現する重要な技術です。
加速度と速度の関係を理解すれば、様々な物理挙動を実装できます。
実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。
Unity入門の森では、等加速度運動を含む物理演算を、実際のゲーム実装とともに体系的に学べます。
ぜひチェックしてみてください。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます





コメント