ゲームでキャラクターを移動させたい。
方向と速度を使って、自然な移動を実装したい。
ベクトルを使えば、方向と速度を組み合わせて移動を制御できます。
ベクトル移動は、ゲーム開発で最も基本的な技術の一つです。
この記事では、ベクトルで移動を実装する考え方として、方向と速度で制御するゲーム数学を見ていきましょう。
- ベクトルで移動を実装する方法が分からない…
- 方向と速度を使って移動させたい。
- ベクトル移動の考え方を知りたい。
✨ この記事でわかること
- ベクトル移動の基本概念
- 方向ベクトルと速度ベクトル
- 移動計算の実装方法
- Unityでの実装方法
- 初心者でも理解できるベクトル移動の考え方
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます
ベクトル移動ゲームとは何か(ゲーム制作目線)

ベクトル移動は、方向と速度を組み合わせて移動を制御する方法です。
ベクトルは、方向と大きさを持つ数学的な表現です。
方向ベクトルと速度を組み合わせることで、自然な移動を実現できます。
ベクトル移動の基本は、移動距離 = 方向ベクトル × 速度 × 時間です。
Unityでは、Vector3クラスを使うことで、ベクトル計算を簡単に実装できます。
これにより、様々な移動パターンを実現できます。
ゲームでの具体的な使い道

ベクトル移動が、ゲームでどう使われているか確認してみましょう。
キャラクターの移動
入力方向に基づいて、方向ベクトルを計算し、速度をかけて移動します。
UnityのVector3クラスを使えば、簡単に実装できます。
敵の追尾移動
プレイヤーへの方向ベクトルを計算し、その方向に移動させます。
毎フレーム方向を更新すれば、滑らかに追尾します。
物理演算での移動
Rigidbodyコンポーネントを使って、速度ベクトルを設定すれば、物理演算による移動を実現します。
補間を使った移動
目標位置への方向ベクトルを計算し、Lerpなどで補間すれば、滑らかな移動を実現します。
- キャラクターの移動(入力方向に基づく移動)
- 敵の追尾移動(プレイヤーへの追従)
- 物理演算での移動(Rigidbodyを使った移動)
- 補間を使った移動(滑らかな移動)
作り方は分かった。
でも完成まで行けない人へ
当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。
※ まずは内容を見るだけでOK
考え方・仕組みを図解イメージで説明

ベクトル移動は、方向ベクトルと速度を組み合わせて移動を制御します。
方向ベクトルの計算
移動したい方向をベクトルで表現します。
目標位置から現在位置を引くことで、方向ベクトルを計算できます。
正規化の重要性
方向ベクトルは、必ず正規化(長さを1にすること)します。
正規化すれば、速度の値が直接移動速度を表すようになります。
移動量の計算
移動距離 = 方向ベクトル × 速度 × 時間
毎フレーム、この計算を行い、位置を更新します。
Time.deltaTimeの使用
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 22 |
public class VectorMovement : MonoBehaviour { public float moveSpeed = 5f; void Update() { // 入力方向を取得 float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical"); // 方向ベクトルを作成 Vector3 direction = new Vector3(horizontal, 0, vertical); direction.Normalize(); // 正規化 // 移動量を計算 Vector3 movement = direction * moveSpeed * Time.deltaTime; // 位置を更新 transform.position += movement; } } |
目標位置への移動
目標位置への方向ベクトルを計算し、移動します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class MoveToTarget : MonoBehaviour { public Transform target; public float moveSpeed = 5f; void Update() { // 方向ベクトルを計算 Vector3 direction = (target.position - transform.position).normalized; // 移動量を計算 Vector3 movement = direction * moveSpeed * Time.deltaTime; // 位置を更新 transform.position += movement; } } |
Rigidbodyを使った移動
Rigidbodyコンポーネントを使って、速度ベクトルを設定します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public class RigidbodyMovement : MonoBehaviour { public float moveSpeed = 5f; private Rigidbody rb; void Start() { rb = GetComponent<Rigidbody>(); } void Update() { float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical"); Vector3 direction = new Vector3(horizontal, 0, vertical).normalized; // 速度ベクトルを設定 rb.velocity = direction * moveSpeed; } } |
補間を使った滑らかな移動
Lerpを使って、滑らかな移動を実装します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class SmoothMovement : MonoBehaviour { public Transform target; public float moveSpeed = 2f; void Update() { // 方向ベクトルを計算 Vector3 direction = (target.position - transform.position).normalized; // Lerpで滑らかに移動 transform.position = Vector3.Lerp( transform.position, transform.position + direction * moveSpeed, Time.deltaTime * moveSpeed ); } } |
実装のコツ
方向ベクトルは、必ず正規化しましょう。
Time.deltaTimeを使って、フレームレートに依存しない移動を実現しましょう。
UnityのVector3クラスを積極的に活用しましょう。

まとめ

この記事では、ベクトルで移動を実装する考え方について見てきました。
重要なポイントをおさらいします。
- ベクトル移動は、方向ベクトルと速度を組み合わせて移動を制御する
- 方向ベクトルは、必ず正規化する
- 移動距離 = 方向ベクトル × 速度 × 時間
- Time.deltaTimeを使って、フレームレートに依存しない移動を実現する
- UnityのVector3クラスを積極的に活用する
ベクトル移動は、ゲーム開発で最も基本的な技術の一つです。
方向と速度を組み合わせることで、様々な移動パターンを実現できます。
UnityのVector3クラスを使うことで、簡単に実装できます。
実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。
Unity入門の森では、ベクトル移動を含むベクトルと行列を、実際のゲーム実装とともに体系的に学べます。
ぜひチェックしてみてください。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます





コメント