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

等速運動は、一定の速度で移動する運動です。
速度が一定で、加速度が0であることが特徴です。
等速運動の基本要素は、以下のものです。
- 速度:一定の値
- 加速度:0(変化なし)
- 位置:速度 × 時間で更新
Unityでは、速度とTime.deltaTimeを使って、簡単に等速運動を実現できます。
ゲームでの具体的な使い道

等速運動が、ゲームでどう使われているか確認してみましょう。
キャラクターの移動
プレイヤーのキャラクターが、一定の速度で移動します。
入力に応じて方向を変えつつ、速度は一定に保たれます。
弾の移動
シューティングゲームで、弾が一定の速度で移動します。
発射された方向に、一定の速度で移動し続けます。
背景のスクロール
横スクロールゲームで、背景が一定の速度でスクロールします。
速度を一定に保つことで、滑らかなスクロールを実現します。
等速運動が使われる場面
- キャラクターの移動
- 弾の移動
- 背景のスクロール
- UI要素の移動
作り方は分かった。
でも完成まで行けない人へ
当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。
※ まずは内容を見るだけでOK
等速運動が成り立つ仕組み|位置を更新する計算の裏側

ゲームの中でキャラクターを一定の速度で動かすためには、数学的な「位置の更新」という考え方が欠かせません。
ただ座標を書き換えるのではなく、毎フレームごとに以下の計算式に基づいて位置を決定しています。
1. 基本となる「位置更新」の計算式
物理の授業で習った「距離 = 速さ × 時間」という公式は、ゲーム開発でもそのまま応用できます。
ゲームでは「現在の位置」に対して、1フレームの間に進んだ「移動量」を足し合わせることで、次の位置を割り出します。
新しい位置 = 現在の位置 + (速度 × 時間)
この計算を毎秒数十回(フレームごと)繰り返すことで、私たちの目にはキャラクターが滑らかに等速移動しているように見えるのです。
2. なぜ「時間(Time.deltaTime)」をかけるのか
等速運動を実装する上で最も重要なのが、時間の扱いです。
ゲームが動作するパソコンの性能によって、1秒間に処理されるフレーム数は異なります。
もし時間に「1フレーム」という単位をそのまま使ってしまうと、性能の良いPCでは速く動き、古いPCでは遅く動くという問題が発生します。
そこで、UnityのTime.deltaTime(前のフレームからの経過時間)を掛け合わせます。
これにより、どの端末で遊んでも「1秒間に進む距離」が一定になり、文字通りの等速運動が実現します。
3. 向きを制御する「方向ベクトル」と「正規化」
移動には「速さ」だけでなく「向き」の情報が必要です。Unityでは「方向ベクトル」を使ってこれを制御しますが、ここで「正規化(Normalize)」という処理が重要になります。
方向ベクトルの長さを「1」に整える正規化を行うことで、どの方向に進む場合でも、速度の値がそのまま「1秒間に進む距離」として正しく反映されるようになります。
これを忘れると、例えば「斜め移動だけ移動が速くなる」といったバグの原因になります。
⚠️ 実装時に意識すべき4つの鉄則
- 速度を固定する: 加速度を0に保つことで、入力がある間はずっと同じ速さで動き続けます。
- 毎フレーム加算する:
Update関数の中で、現在の座標に移動量を足し算し続けます。 - 時間の差を埋める:
Time.deltaTimeを使い、フレームレートに依存しない動きを作ります。 - ベクトルを整える: 斜め移動で速さが変わらないよう、方向ベクトルは必ず正規化してから速度を掛けます。
Unityで実装する際の注意点(代表例)

Unityで等速運動を実装する場合の注意点を見ていきましょう。
基本的な等速運動
速度を使って位置を更新します。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
public class UniformMotion : MonoBehaviour { public float moveSpeed = 5f; // 移動速度 public Vector3 direction = Vector3.forward; // 移動方向 void Update() { // 位置を更新 transform.position += direction.normalized * moveSpeed * Time.deltaTime; } } |
入力に応じた方向の変更
入力に応じて方向を変更しつつ、速度は一定に保ちます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
void Update() { // 入力方向を取得 float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical"); Vector3 direction = new Vector3(horizontal, 0, vertical); direction.Normalize(); // 位置を更新 transform.position += direction * moveSpeed * Time.deltaTime; } |

まとめ

この記事では、等速運動について見てきました。
重要なポイントをおさらいします。
重要なポイント:
- 等速運動は、一定の速度で移動する運動
- 位置 = 速度 × 時間で更新する
- 加速度が0であることが特徴
- Time.deltaTimeを使って、フレームレートに依存しない移動を実現する
- 方向ベクトルに速度をかけることで、任意の方向に移動できる
等速運動は、ゲーム開発で最も基本的な移動技術です。
速度と時間の関係を理解すれば、様々な移動パターンを実装できます。
実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。
Unity入門の森では、等速運動を含む物理演算を、実際のゲーム実装とともに体系的に学べます。
ぜひチェックしてみてください。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます





コメント