Unityでゲームを作り始めたけど、数学の知識が足りなくて困っている。
「Vector3って結局何?」「回転を計算する方法がわからない」と立ち止まっていませんか?
でも安心してください。ゲーム数学は、机の上の学問ではなく、実装に直結した実践的なツールです。
難しい公式の証明よりも、「どのコードを書けば思い通りに動くか」という仕組みを理解することが大切です。
この記事では、ゲーム数学の入門として、Unityでの開発に欠かせない基礎知識と、今日から使える実装方法をセットで解説します。
- Unityのスクリプトに出てくる数学用語がサッパリ分からない。
- キャラクターを特定の方向に動かしたり、回転させたりしたい。
- 数学の知識不足が原因で、開発の手が止まってしまう。
✨ この記事でわかること
- ゲーム数学がUnityのどの機能に対応しているか
- ベクトル計算を使った移動と方向の制御
- クォータニオンとオイラー角による回転の仕組み
- 座標変換(ワールドとローカル)の使い分け
- 今すぐコピペで試せる基礎実装コード
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます
ゲーム数学入門とは何か(ゲーム制作目線)

ゲーム数学入門とは、教科書にある数学を解くことではなく、「画面上の物体をどう動かすか」というルールを学ぶことです。
例えば、コントローラーを倒した方向にキャラを動かすには「ベクトル」が必要ですし、カメラを滑らかに回転させるには「クォータニオン」という概念が使われます。
Unityには強力な数学ライブラリが備わっているため、私たちは複雑な計算式をゼロから書く必要はありません。
大切なのは、「この動きを実現するには、どの数学(クラス)を使えばいいのか」を知ることです。
まずはUnityで最も頻出する「ベクトル」から、概念を整理していきましょう。
ゲーム数学の勉強方法|Unity実装とセットで学ぶ実践的な学習アプローチ
ゲーム数学の核心:Unityでの概念と使い方

Unityでの開発において、特に出番の多い4つの数学要素を解説します。
ベクトル計算(Vector)
ベクトルは「向き」と「大きさ」を持つ量です。Unityでは主にVector3として扱われます。
単なる座標(位置)としてだけでなく、「どちらへ、どれくらいの勢いで動くか」という力を表す際にも使用されます。
行列と座標変換(Matrix)
行列(Matrix)は、位置・回転・拡大をひとまとめにして計算するための道具です。
特に重要なのが「座標変換」です。自分中心の視点(ローカル座標)と、世界全体の視点(ワールド座標)を切り替える際に、内部で行列計算が行われています。
回転処理(Quaternion / Euler)
Unityでの回転は、人間が理解しやすい「オイラー角(0度〜360度)」と、計算ミスの少ない「クォータニオン」の2種類を使い分けます。
「特定のターゲットを振り向かせる」といった処理は、数学を知っていると数行のコードで完結します。
当たり判定(Collision Physics)
「敵と接触したか」という判定は、数学的には「2点間の距離」や「線と円が重なっているか」といった計算です。
UnityのPhysics機能も、その中身はベクトルや距離計算といったシンプルな数学の積み重ねでできています。
Unityでよく使う数学クラス
- Vector2 / Vector3:位置、移動、方向、距離
- Quaternion:回転の制御(ジンバルロックの回避)
- Mathf:値を制限する(Clamp)や、滑らかに変化させる(Lerp)
- Transform:行列を意識せずに座標変換を行うための窓口
作り方は分かった。
でも完成まで行けない人へ
当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。
※ まずは内容を見るだけでOK
仕組みをイメージで理解する:なぜ数学が必要か

数学を知っていると、Unityが自動で行っている処理を「カスタマイズ」できるようになります。
「正規化(Normalized)」の重要性
例えば、斜め移動が速くなってしまう問題は、ベクトルの長さを1にする「正規化」という数学知識があれば一瞬で解決できます。
理論は後回しで、「斜め移動のバグを防ぐツール」として数学を捉えましょう。
座標系の使い分け
「キャラの正面に弾を撃ち出す」ときはローカル座標、「マップの北に弾を撃ち出す」ときはワールド座標を使います。
この切り替え(座標変換)の仕組みがわかると、3Dゲームのカメラワークや攻撃アクションの幅が劇的に広がります。
Unityが計算を代行してくれる
幸いなことに、UnityにはVector3.DistanceやQuaternion.LookRotationといった便利な関数が用意されています。
これらは数学の公式をメソッド化したものです。私たちは「公式」を覚える代わりに、これらの「関数の意味」を理解すれば良いのです。
⚠️ 実装を助ける知識のポイント
- 数学は「問題を解くため」ではなく「動きを制御するため」の道具
- すべてを暗記せず、必要な時にUnityのAPIリファレンスを引ければOK
- コードを書いて画面上の動きが変わるのを見ることが最大の学習
Unityで実装する:今日から使える基本コード集

学んだ概念を、実際のC#スクリプトでどう書くか見ていきましょう。
1. ベクトルを使った移動と方向
特定のターゲットに向かって、一定の速度で移動させる基本パターンです。
|
1 2 3 4 5 6 |
// ターゲットへの方向を計算(引き算で求められる) Vector3 direction = (target.position - transform.position).normalized; // 方向に速度と時間を掛けて移動させる transform.position += direction * moveSpeed * Time.deltaTime; |
2. 座標の変換(ローカル⇔ワールド)
「自分の前方5メートル」のワールド座標を取得する、といった処理に役立ちます。
|
1 2 3 4 5 6 |
// 自分のローカル座標での(0, 0, 5)を、ワールド座標に変換 Vector3 worldPos = transform.TransformPoint(new Vector3(0, 0, 5)); // 逆に、ワールド座標を自分から見た相対位置に変換 Vector3 localPos = transform.InverseTransformPoint(otherObject.position); |
3. クォータニオンによる回転
「パッと一瞬で向く」のではなく、滑らかにターゲットの方を向かせる手法です。
|
1 2 3 4 5 6 |
// ターゲットの方向を向く回転情報を生成 Quaternion targetRotation = Quaternion.LookRotation(target.position - transform.position); // 現在の回転からターゲットの回転へ、滑らかに補間する(Mathf.Lerpの回転版) transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * rotationSpeed); |
4. 距離によるシンプルな衝突・接近判定
物理演算を使わずに、円形の範囲内に入ったかどうかを判定します。
|
1 2 3 4 5 6 7 8 |
// 2点間の距離を測定 float distance = Vector3.Distance(transform.position, target.position); if (distance < 3.0f) // 3メートル以内に近づいたら { Debug.Log("射程範囲内です!"); } |

まとめ

この記事では、Unity開発におけるゲーム数学の基礎概念と実装について解説しました。
重要なポイントをおさらいします。
重要なポイント:
- ベクトルは移動や向きを制御するための基本単位
- 座標変換をマスターすれば、ローカルとワールドの視点を自在に操れる
- クォータニオンは回転を滑らかにするための強力な味方
- 難しい公式を解くより、Unityの数学クラスを使いこなすことが大切
数学を知ることで、あなたのアイデアをゲーム内で形にする力が飛躍的に高まります。
「もっと体系的に、ステップバイステップで学びたい」という方は、学習のロードマップも参考にしてみてください。
Unity入門の森では、本記事で紹介した数学の概念を使いながら、実際のゲームを一から完成させるまでの全工程を公開しています。
数学が「動く楽しさ」に変わる瞬間を、ぜひ体験してみてくださいね。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます





コメント