Unityでゲーム開発を始めたばかりの頃、4×4行列という言葉に出会って戸惑った経験はありませんか。
「行列って高校数学で習ったアレ?」
「ゲーム開発になぜ必要?」
「どうやって使うの?」
そんな疑問を抱えている方に向けて、4×4行列の基礎から実装方法まで丁寧に解説します。
数式は最小限に抑え、実際の動きと紐付けて理解できる構成になっていますので、数学が苦手な方でも安心して読めます。
\読むだけで終わらせない!実際にゲームを作って実力をつけよう/
トレンド×入門に最適
Unity ノンフィールドRPG
+スレスパ風JRPG講座
Unity6対応・スマホ化対応の最新カリキュラム。今もっとも人気のデッキ構築型ゲームをJRPGと組み合わせて実装。初心者が最初に選ぶ一本として最適です。
王道アクションに挑戦
Unity 2Dアクションゲーム
の作り方講座(ロックマン風)
ロックマン風の本格横スクロールACTをスマホ化・広告実装まで対応。7ステージ+ラスボスという市販ゲームに近い本格構成で、リリースまで見据えて作れます。
3D入門に最適
ゼルダ風3Dアクションゲーム
の作り方講座
ゼルダの伝説・モンハン・原神のような3Dアクションをスマホ対応で作れる入門講座。初心者でも全16回でしっかり3D開発の基礎を習得できます。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
4×4行列とは何か

4×4行列は、ゲーム開発において移動・回転・拡大縮小を1つの計算で統合するための重要なツールです。
Unityでは、Transform(位置・回転・スケール)を表現する際に、内部で4×4行列を使用しています。
3×3行列では移動・回転・拡大縮小を個別に扱う必要がありますが、4×4行列を使うことで、これらを1つの計算式でまとめて処理できるんです。
4×4行列の構造
4×4行列は、4行4列の16個の数値で構成されています。
| m00 | m01 | m02 | m03 |
| m10 | m11 | m12 | m13 |
| m20 | m21 | m22 | m23 |
| m30 | m31 | m32 | m33 |
左上の3×3部分(m00〜m22)が回転と拡大縮小を、右側の列(m03, m13, m23)が移動を、一番下の行(m30, m31, m32, m33)は通常は固定値(0, 0, 0, 1)を保持しています。
なぜ4×4行列が必要なのか
ゲームオブジェクトを操作する際、位置を変更し、回転させ、さらに拡大縮小するといった複数の変換を順番に適用する必要があります。
これを3×3行列で実現しようとすると、計算が複雑になり、順番によって結果が変わってしまう問題が発生。
4×4行列を使えば、これらの変換を1つの行列にまとめることができ、計算も統一できるんです。
- 移動・回転・拡大縮小を1つの計算で統合できる
- 変換の順番を気にせず計算できる
- 複数の変換を効率的に組み合わせられる
- GPU計算との親和性が高い
4×4行列の各要素の意味

4×4行列の各要素には、それぞれ特定の意味があります。
左上の3×3部分は回転と拡大縮小、右側の列は移動を表しています。
移動要素(Translation)
右側の列(m03, m13, m23)は、オブジェクトの移動量を表します。
X方向、Y方向、Z方向のそれぞれの移動量が、この3つの値に格納されているイメージです。
回転要素(Rotation)
左上の3×3部分は、オブジェクトの回転情報を含んでいます。
各行ベクトルが、それぞれX軸、Y軸、Z軸の方向を表しているんです。
拡大縮小要素(Scale)
左上の3×3部分の対角要素(m00, m11, m22)が、各軸方向の拡大縮小率を表します。
これらの値が1.0なら等倍、2.0なら2倍に拡大、0.5なら半分に縮小という具合。
Unityでの4×4行列の実装方法

Unityでは、Matrix4x4という構造体を使って4×4行列を扱えます。
実際の使用例を見ていきましょう。
基本的な4×4行列の作成
Unityで4×4行列を作成する方法には、いくつかのパターンがあります。
Matrix4x4.identityを使えば、変換を行わない単位行列を作成可能。
単位行列は、何も変換しない「ニュートラルな状態」の行列です。
実際のコード例は以下の通り。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// 単位行列を作成(変換なし) Matrix4x4 identity = Matrix4x4.identity; // 移動のみの行列を作成 Vector3 position = new Vector3(5, 10, 15); Matrix4x4 translateMatrix = Matrix4x4.Translate(position); // 回転のみの行列を作成 Quaternion rotation = Quaternion.Euler(45, 90, 0); Matrix4x4 rotationMatrix = Matrix4x4.Rotate(rotation); // 拡大縮小のみの行列を作成 Vector3 scale = new Vector3(2, 2, 2); Matrix4x4 scaleMatrix = Matrix4x4.Scale(scale); |
複数の変換を組み合わせる
移動・回転・拡大縮小を組み合わせるには、行列を掛け算する必要があります。
ポイントは、掛け算の順番が結果に大きく影響すること。
同じ変換でも順番が違うと、最終的な位置や向きが変わってしまうんです。
|
1 2 3 4 5 6 7 |
// 移動→回転→拡大縮小の順で適用 Matrix4x4 combined = scaleMatrix * rotationMatrix * translateMatrix; // 組み合わせた行列を使って座標変換 Vector3 originalPoint = new Vector3(1, 0, 0); Vector3 transformedPoint = combined.MultiplyPoint(originalPoint); |
この例では、まず移動(translateMatrix)が適用され、次に回転(rotationMatrix)、最後に拡大縮小(scaleMatrix)が適用されます。
変換の順番を逆にすると、全く異なる結果になるので注意が必要です。
- 行列の掛け算の順番は重要です(順番を変えると結果が変わる)
- TransformからMatrix4x4への変換は、Transform.localToWorldMatrixを使うのが一般的
- 逆変換には、Matrix4x4.inverseを使用します
4×4行列の実践的な使用例

実際のゲーム開発で4×4行列がどのように使われるか、具体例を見ていきましょう。
カメラのビュー行列の理解
Unityのカメラは、ワールド座標を画面座標に変換する際に4×4行列を使用しています。
カメラのworldToCameraMatrixが、まさにその変換行列です。
この行列を使うことで、3D空間の任意の点が画面のどの位置に表示されるかを計算できます。
例えば、UI上に3Dオブジェクトの位置を表示したい場合、この変換行列を使ってワールド座標からスクリーン座標への変換が可能。
UnityのCamera.WorldToScreenPointメソッドも、内部ではこの4×4行列を使っているんです。
カスタムシェーダーでの使用
シェーダーで独自の座標変換を行いたい場合、4×4行列が活躍します。
頂点シェーダーで、カスタム変換行列を適用することで、特殊なエフェクトを実現できるんです。
例えば、画面全体を歪ませるエフェクトや、オブジェクトを波打たせるようなアニメーションなど、シェーダー内で4×4行列を操作することで実現可能。
プロシージャル生成での活用
マップや地形を自動生成する際、複数の変換を組み合わせる必要があります。
4×4行列を使えば、これらの変換を効率的に管理できます。
プロシージャル生成では、同じパターンを回転させたり、拡大縮小したり、移動させたりして、様々なバリエーションを作り出します。
4×4行列を使うことで、これらの変換を一括で管理でき、コードも読みやすくなるんです。
アニメーションシステムでの活用
Unityのアニメーションシステムでも、4×4行列が使われています。
各キーフレームの位置・回転・スケール情報が4×4行列として保存され、時間に応じて補間される仕組みです。
カスタムアニメーションシステムを作る際も、4×4行列を理解していれば、柔軟な制御が可能になります。

まずは簡単な変換から始めて、徐々に複雑な組み合わせに挑戦してみましょう。
4×4行列の実装手順

※この順番を守らずに作り始めると、だいたい後で全部作り直すことになります。
- STEP1基本行列の作成
まず、移動・回転・拡大縮小のそれぞれの基本行列を作成します。Matrix4x4.Translate、Matrix4x4.Rotate、Matrix4x4.Scaleを使用しましょう。
- STEP2変換行列の組み合わせ
必要な変換を順番に組み合わせます。掛け算の順番に注意しながら、複数の変換を統合していきましょう。
- STEP3座標変換の実行
組み合わせた行列を使って、実際に座標を変換します。MultiplyPointとMultiplyVectorの使い分けを意識することが大切です。
- STEP4動作確認
変換結果が期待通りかどうかを確認します。デバッグログを出力したり、Sceneビューで視覚的に確認しましょう。
- STEP5最適化と整理
コードを見直して、無駄な計算がないか確認します。よく使う変換行列は、キャッシュしておくのがおすすめです。
よくある間違いとデバッグ方法

4×4行列を使う際によくある間違いと、その対処法を紹介します。
行列の掛け算の順番を間違える
行列の掛け算は、通常の数値の掛け算と異なり、順番が重要です。
|
1 2 3 4 5 6 |
// ❌ 間違った順番 Matrix4x4 wrong = translateMatrix * rotationMatrix; // ✅ 正しい順番(移動→回転) Matrix4x4 correct = rotationMatrix * translateMatrix; |
変換の順番は「右から左」に適用されるため、注意が必要です。
座標変換の向きを間違える
座標を変換する際、MultiplyPointとMultiplyVectorの違いを理解していないと、思わぬ結果になります。
|
1 2 3 4 5 6 |
// MultiplyPoint:移動を含む変換(同次座標を考慮) Vector3 point = matrix.MultiplyPoint(originalPoint); // MultiplyVector:移動を含まない変換(方向ベクトル用) Vector3 direction = matrix.MultiplyVector(originalDirection); |
位置を変換する場合はMultiplyPoint、方向ベクトルを変換する場合はMultiplyVectorを使い分けましょう。
デバッグのコツ
4×4行列の動作を確認するには、各要素の値を確認するのが有効です。
|
1 2 3 4 5 |
// 行列の内容をログ出力 Debug.Log($"Matrix: {matrix}"); Debug.Log($"Translation: {matrix.GetColumn(3)}"); Debug.Log($"Scale: {matrix.lossyScale}"); |
また、UnityのSceneビューでGizmosを表示すれば、視覚的に変換結果を確認できます。
Gizmos.DrawLineやGizmos.DrawWireCubeを使って、変換前後の位置を表示すれば、変換が正しく行われているか一目で分かります。

単純な移動だけ、回転だけ、拡大縮小だけ、それぞれを個別に確認してから組み合わせるのがコツです。
パフォーマンスの最適化
4×4行列の計算は、毎フレーム実行するとパフォーマンスに影響を与える可能性があります。
変換行列が頻繁に変わらない場合は、キャッシュしておくのがおすすめ。
また、Matrix4x4.inverse(逆行列の計算)は計算コストが高いので、何度も使う場合は一度計算して保存しておきましょう。
- 頻繁に使う変換行列はキャッシュする
- 逆行列は一度計算して保存する
- 不要な計算は避ける(単位行列の判定など)
- プロファイラーでボトルネックを特定する
- 行列の各要素の値を確認する
- 変換前後の座標を比較する
- SceneビューのGizmosで視覚的に確認する
- 小さい単位でテストしながら進める
4×4行列と他の数学知識の関係

4×4行列を理解する上で、関連する数学知識も合わせて学んでおくと理解が深まります。
ベクトルとの関係
4×4行列とベクトルは、切っても切れない関係にあります。
ベクトルを行列で変換することで、座標変換が実現できるんです。
UnityのVector3やVector4は、行列計算と組み合わせて使うことで、強力な座標変換が可能になります。
クォータニオンとの関係
回転を表現する方法には、オイラー角、クォータニオン、そして4×4行列があります。
4×4行列は、クォータニオンから変換することが可能で、Matrix4x4.Rotateメソッドがまさにその変換を行っています。
クォータニオンで回転を扱い、それを4×4行列に変換して、最終的な座標変換を行う、という流れが一般的です。
同次座標系との関係
4×4行列は、同次座標系という概念と密接に関わっています。
3次元座標を4次元で表現することで、移動・回転・拡大縮小を統一的に扱えるようになるんです。
最後の要素(w成分)が1の場合は位置、0の場合は方向ベクトルを表す、という仕組みになっています。
4×4行列の学習を深めるには

4×4行列の基礎を理解した後は、さらに深く学んでいくことが大切です。
Unity入門の森では、ゲーム数学の基礎から応用まで、体系的に学べる環境が整っています。
特に、永久会員チケットでは、ゲーム開発に必要な数学の知識を幅広くカバーしているため、4×4行列だけでなく、ベクトル、クォータニオン、物理演算など、関連する知識も一緒に学べます。
また、2Dアクションゲーム講座では、実際にゲームを作りながら、座標変換や行列の実践的な使い方を身につけられます。
数学が苦手な方でも、実践的なコードと紐付けて学べるので、理解が深まりやすいはずです。
- 4×4行列の基本的な構造と意味
- Unityでの4×4行列の実装方法
- 移動・回転・拡大縮小の統合方法
- よくある間違いとデバッグのコツ
- 実践的な使用例
記事を読んで「作ってみたい!」と思ったら!人気ゲームを題材にした講座で実力をつけよう
知識を読むだけで終わらせるのはもったいない。実際に手を動かしてゲームを1本完成させることで、理解が一気に深まります。人気タイトルをモデルにした講座で、ゲーム開発の第一歩を踏み出しましょう。
Unity ノンフィールドRPG+スレスパ風JRPG講座【Unity6対応!トレンドのデッキ構築×JRPGをスマホ向けに作れる!】

- Unity6対応・スマホ化対応で最新環境のゲーム開発が学べる
- Slay the Spire風のデッキ構築システム×JRPGの組み合わせを実装
- 初心者でも取り組みやすい丁寧な解説構成
- ノンフィールドRPGとデッキ構築JRPGの2つを合わせて学ぶのがおすすめ
Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座は、今もっともトレンドのデッキ構築型ゲームシステムをJRPGと組み合わせて実装する方法を学べる講座です。
Unity6対応・スマホ化対応の最新カリキュラムで、コラムやTIPSで読んで「なるほど」と思った知識を、実際に動くゲームとして形にする体験ができます。
「Slay the Spireみたいなゲームを自分でも作ってみたい!」という人の最初の一歩として最適な講座です。
Unity6対応・スマホ化対応の最新カリキュラム
トレンドのデッキ構築×JRPGを最速で実装しよう
→ スレスパ風デッキ構築JRPG講座を見てみる
スマホ対応の最新環境で、ゲーム開発の第一歩を踏み出そう!
Unity 2Dアクションゲームの作り方講座(ロックマン風)【全16回!スマホ化・広告実装まで対応した本格横スクロールACTを作れる!】

- ロックマン・マリオ・カービィのような横スクロールACTをゼロから開発
- 7ステージ+ラスボスステージの市販ゲームに近い本格的なゲーム設計
- スマホ化・AdMob広告実装まで対応してリリースまで見据えた構成
- 敵AI15体・多彩なマップギミック・武器システムを完全実装
- 完全オリジナルゲームをアセット不使用で素材提供付きで制作
Unity 2Dアクションゲームの作り方講座(ロックマン風)は、ロックマン・スーパーマリオ・星のカービィのような2D横スクロールアクションゲームを開発できるようになる本格的な講座です。
TIPSやコラムで学んだ当たり判定・物理挙動・敵AIの知識を、実際のゲームコードとして実装する体験が全16回に凝縮されています。スマホ化・広告実装まで対応しているため、作って終わりではなくリリースまで見据えた実践スキルが身につきます。
「読んで理解した知識を、動くゲームとして形にしたい」という人に強くおすすめの一本です。
スマホ化・広告実装まで対応した本格横スクロールACT
ロックマン風の2Dアクションゲームをリリースまで作り上げよう
→ 2Dアクションゲームの作り方講座を見てみる
広告収益まで視野に入れた実践スキルを今すぐ手に入れよう!
ゼルダ風3Dアクションゲームの作り方講座【全16回!初心者でも3Dアクションがスマホ対応で作れる!】

- ゼルダの伝説・モンハン・原神のような3Dアクションをゼロから開発
- 初心者でも取り組みやすい丁寧な解説構成
- スマホ化対応で実機で動かせるゲームが完成
- アセットを使った実践的なゲーム開発手法が身につく
- 画像・動画・全ソースコード公開の充実したサポート
ゼルダ風3Dアクションゲームの作り方講座は、ゼルダの伝説・モンハン・原神のような本格的な3Dアクションゲームを作りたい人におすすめの入門講座です。
コラム・TIPSで「3Dゲームはなんとなく難しそう」と感じていた人でも、全16回の丁寧な解説で確実に完成まで到達できます。スマホ化対応で実機で動かせるため、作った達成感がひときわ大きい講座です。
「3Dゲームの仕組みを理解した次は、実際に自分で作ってみたい」という人の最初の一歩として最適です。
初心者でも3Dアクションがスマホ対応で完成する
ゼルダ風3Dアクションゲームで3D開発の第一歩を踏み出そう
→ ゼルダ風3Dアクションゲームの作り方講座を見てみる
3D開発の壁を一気に突破!スマホで動くオリジナルゲームを完成させよう!
まとめ

この記事では、Unityで4×4行列を扱う基礎を解説しました。
4×4行列は、ゲーム開発において移動・回転・拡大縮小を統合的に扱うための重要なツールです。
最初は難しく感じるかもしれませんが、実際にコードを書いて動かしてみることで、理解が深まっていきます。
「行列って難しそう💧」と感じる方もいるかもしれませんが、UnityのMatrix4x4構造体を使えば、比較的簡単に扱えます。
まずは簡単な変換から始めて、徐々に複雑な組み合わせに挑戦していきましょう。
- 4×4行列は移動・回転・拡大縮小を1つの計算で統合できる
- 左上の3×3部分が回転と拡大縮小、右側の列が移動を表す
- UnityではMatrix4x4構造体を使って4×4行列を扱える
- 行列の掛け算の順番は重要で、変換は「右から左」に適用される
- 座標変換にはMultiplyPoint、方向ベクトルにはMultiplyVectorを使い分ける
まずは簡単な変換から始めて、徐々に複雑な組み合わせに挑戦してみましょう。
Unity入門の森では、ゲーム数学の基礎から応用まで、実践的な知識を体系的に学べる環境が整っています。
疑問があれば、ぜひ活用してみてください。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。





コメント