Unityで回転を扱おうとすると、クォータニオンという言葉に出会います。
「クォータニオンって何?」
「オイラー角とどう違うの?」
「どうやって使うの?」
そんな疑問を抱えている方に向けて、クォータニオンの基礎について、初心者でも理解できるように詳しく解説します。
\読むだけで終わらせない!実際にゲームを作って実力をつけよう/
トレンド×入門に最適
Unity ノンフィールドRPG
+スレスパ風JRPG講座
Unity6対応・スマホ化対応の最新カリキュラム。今もっとも人気のデッキ構築型ゲームをJRPGと組み合わせて実装。初心者が最初に選ぶ一本として最適です。
王道アクションに挑戦
Unity 2Dアクションゲーム
の作り方講座(ロックマン風)
ロックマン風の本格横スクロールACTをスマホ化・広告実装まで対応。7ステージ+ラスボスという市販ゲームに近い本格構成で、リリースまで見据えて作れます。
3D入門に最適
ゼルダ風3Dアクションゲーム
の作り方講座
ゼルダの伝説・モンハン・原神のような3Dアクションをスマホ対応で作れる入門講座。初心者でも全16回でしっかり3D開発の基礎を習得できます。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
クォータニオンとは何か
クォータニオン(Quaternion)は、4つの数値で回転を表現する方法です。
Unityでは、回転は内部的に全てクォータニオンで管理されています。
オイラー角では発生するジンバルロックの問題を回避できるのが最大の特徴です。
クォータニオンの構造
クォータニオンは、4つの数値(x, y, z, w)で構成されます。
- x, y, z:回転軸の方向を表すベクトル成分
- w:回転角度を表すスカラー成分
Unityでは、Quaternion構造体で扱えます。
なぜクォータニオンが使われるのか
クォータニオンが使われる主な理由は、以下の通りです。
- ジンバルロックを回避できる:オイラー角の問題点を解決
- 補間が滑らか:Slerpで滑らかな回転補間が可能
- 計算が効率的:複数の回転を組み合わせやすい
ただし、直感的に理解しにくいという欠点もあります。
- 4つの数値(x, y, z, w)で回転を表現
- ジンバルロックを回避できる
- 滑らかな補間(Slerp)が可能
- Unityの内部では回転は全てクォータニオン
オイラー角との違い
クォータニオンとオイラー角の違いを理解しておくことが大切です。
オイラー角の特徴
オイラー角は、3つの角度(X, Y, Z)で回転を表現します。
直感的で分かりやすいのが特徴ですが、ジンバルロックという問題があります。
クォータニオンの特徴
クォータニオンは、4つの数値で回転を表現します。
ジンバルロックを回避できるのが最大の利点ですが、直感的に理解しにくいという欠点があります。
使い分けのポイント
一般的には、以下のように使い分けます。
- オイラー角:Inspector上での調整、直感的な角度指定
- クォータニオン:実際の回転計算、補間処理
Unityでは、オイラー角で角度を指定し、内部でクォータニオンに変換して使用するのが一般的です。
Unityでのクォータニオンの使い方
Unityでクォータニオンを扱う基本的な方法を見ていきましょう。
クォータニオンの作成
Unityでクォータニオンを作成する方法には、いくつかあります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// オイラー角からクォータニオンを作成 Quaternion rotation = Quaternion.Euler(45, 90, 0); // 軸と角度からクォータニオンを作成 Vector3 axis = Vector3.up; // Y軸 float angle = 90f; Quaternion rotation = Quaternion.AngleAxis(angle, axis); // 単位クォータニオン(回転なし) Quaternion identity = Quaternion.identity; // 方向ベクトルからクォータニオンを作成 Vector3 direction = Vector3.forward; Quaternion rotation = Quaternion.LookRotation(direction); |
回転の適用
作成したクォータニオンをTransformに適用します。
|
1 2 3 4 5 6 |
// Transformの回転を設定 transform.rotation = Quaternion.Euler(45, 90, 0); // 回転を掛け算して組み合わせる transform.rotation = transform.rotation * Quaternion.Euler(0, 10, 0); |
回転の順番が重要なので、掛け算の順番に注意が必要です。
回転の補間
クォータニオンを使えば、滑らかな回転補間が可能です。
|
1 2 3 4 5 6 7 8 9 |
Quaternion startRotation = Quaternion.identity; Quaternion endRotation = Quaternion.Euler(0, 90, 0); // Lerpで補間(小さい角度に適している) Quaternion currentRotation = Quaternion.Lerp(startRotation, endRotation, 0.5f); // Slerpで補間(大きい角度に適している、より滑らか) Quaternion currentRotation = Quaternion.Slerp(startRotation, endRotation, 0.5f); |
Quaternion.Slerpを使うことで、球面線形補間による滑らかな回転が可能になります。
ジンバルロックの回避
クォータニオンの最大の利点は、ジンバルロックを回避できることです。
ジンバルロックとは
ジンバルロックは、オイラー角で回転を表現する際に発生する問題です。
特定の角度の組み合わせで、1つの回転軸が失われてしまう現象です。
クォータニオンでの回避
クォータニオンでは、この問題が発生しません。
4つの数値で回転を表現するため、どのような回転でも正確に表現できます。
|
1 2 3 4 5 6 |
// オイラー角だとジンバルロックが発生する可能性がある transform.eulerAngles = new Vector3(90, 90, 0); // 問題が発生する可能性 // クォータニオンなら問題なし transform.rotation = Quaternion.Euler(90, 90, 0); // 安全 |
実用的な使用例
FPSカメラなど、回転が重要な場面ではクォータニオンが適しています。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class FPSCameraController : MonoBehaviour { private float rotationX = 0f; private float rotationY = 0f; void Update() { float mouseX = Input.GetAxis("Mouse X"); float mouseY = Input.GetAxis("Mouse Y"); rotationY += mouseX; rotationX -= mouseY; rotationX = Mathf.Clamp(rotationX, -90f, 90f); // オイラー角で管理し、クォータニオンに変換 transform.rotation = Quaternion.Euler(rotationX, rotationY, 0f); } } |
オイラー角で角度を管理し、クォータニオンに変換して適用する方法が一般的です。
Unityでの実装例(C#コード)
Unityでクォータニオンを実装する具体的な例を見ていきましょう。
基本的な回転制御
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using UnityEngine; public class QuaternionRotationController : MonoBehaviour { [Header("回転設定")] public float rotationSpeed = 90f; public Vector3 rotationAxis = Vector3.up; void Update() { // 軸と角度からクォータニオンを作成 float angle = rotationSpeed * Time.deltaTime; Quaternion deltaRotation = Quaternion.AngleAxis(angle, rotationAxis); // 回転を適用 transform.rotation = transform.rotation * deltaRotation; } } |
滑らかな回転補間
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
using UnityEngine; public class SmoothRotationController : MonoBehaviour { [Header("目標回転")] public Transform target; public float rotationSpeed = 5f; public bool useSlerp = true; void Update() { if (target == null) return; // 目標の方向を計算 Vector3 direction = (target.position - transform.position).normalized; Quaternion targetRotation = Quaternion.LookRotation(direction); // 滑らかに回転 if (useSlerp) { transform.rotation = Quaternion.Slerp( transform.rotation, targetRotation, rotationSpeed * Time.deltaTime ); } else { transform.rotation = Quaternion.Lerp( transform.rotation, targetRotation, rotationSpeed * Time.deltaTime ); } } } |
- クォータニオンの掛け算の順番は重要(順番を変えると結果が変わる)
- LerpとSlerpの使い分けが重要(小さい角度はLerp、大きい角度はSlerp)
- オイラー角とクォータニオンの変換時に注意が必要
- クォータニオンの値は直接編集しない方が良い
クォータニオンの実装手順
※この順番を守らずに作り始めると、だいたい後で全部作り直すことになります。
- STEP1クォータニオンの基本を理解
クォータニオンが何かを理解します。オイラー角との違いを把握しましょう。
- STEP2基本的な作成方法を習得
Quaternion.EulerやQuaternion.AngleAxisでクォータニオンを作成します。様々な作成方法を試してみましょう。
- STEP3回転の適用方法を実装
作成したクォータニオンをTransformに適用します。回転の掛け算の順番に注意しましょう。
- STEP4補間の実装
LerpやSlerpを使って、滑らかな回転補間を実装します。使い分けのポイントを理解しましょう。
- STEP5実践的な活用
FPSカメラやオブジェクトの回転など、実践的な場面で活用します。オイラー角との使い分けを意識しましょう。
よくある問題と解決方法
クォータニオンを使う際によくある問題と、その解決方法を紹介します。
回転の順番がおかしい
クォータニオンの掛け算の順番は重要です。
|
1 2 3 4 5 6 |
// ✅ 正しい順番(ローカル回転) transform.rotation = transform.rotation * deltaRotation; // ❌ 間違った順番(ワールド回転) transform.rotation = deltaRotation * transform.rotation; |
補間が滑らかでない
大きい角度の場合は、Slerpを使います。
|
1 2 3 4 |
// 小さい角度(約10度以下)→ Lerp // 大きい角度 → Slerp transform.rotation = Quaternion.Slerp(current, target, t); |
オイラー角との変換で問題が発生
オイラー角とクォータニオンの変換時には注意が必要です。
|
1 2 3 4 5 6 |
// オイラー角 → クォータニオン Quaternion q = Quaternion.Euler(45, 90, 0); // クォータニオン → オイラー角 Vector3 euler = q.eulerAngles; |
変換の際、値が-180〜180の範囲にクランプされることに注意が必要です。
- 回転の順番がおかしい → 掛け算の順番を確認する
- 補間が滑らかでない → 大きい角度の場合はSlerpを使う
- 変換で問題が発生 → オイラー角とクォータニオンの変換に注意する
- 値がおかしい → クォータニオンの値を直接編集しない
クォータニオンの学習を深めるには
クォータニオンの基礎を理解した後は、さらに深く学んでいくことが大切です。
Unity入門の森では、ゲーム開発に必要な数学の知識を体系的に学べる環境が整っています。
特に、永久会員チケットでは、クォータニオンだけでなく、回転全般に関する知識を幅広くカバーしています。
また、2Dアクションゲーム講座では、実際にゲームを作りながら、クォータニオンの実践的な使い方を身につけられます。
回転の基礎から応用まで、実際のコードと紐付けて学べるので、理解が深まりやすいはずです。
- クォータニオンとは何か、なぜ使われるのか
- オイラー角との違いと使い分け
- Unityでのクォータニオンの使い方
- ジンバルロックの回避方法
- よくある問題と解決方法
記事を読んで「作ってみたい!」と思ったら!人気ゲームを題材にした講座で実力をつけよう
知識を読むだけで終わらせるのはもったいない。実際に手を動かしてゲームを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開発の壁を一気に突破!スマホで動くオリジナルゲームを完成させよう!
まとめ

この記事では、クォータニオンの基礎について解説しました。
クォータニオンは、4つの数値で回転を表現する方法で、ジンバルロックを回避できるのが最大の特徴です。
Unityでは、内部的に回転は全てクォータニオンで管理されており、オイラー角で角度を指定し、内部で変換される仕組みになっています。
「クォータニオンって難しそう💧」と感じる方もいるかもしれませんが、Unityの便利な機能を使えば、比較的簡単に扱えます。
まずは基本的な使い方から始めて、徐々に高度な機能に挑戦していきましょう。
- クォータニオンは4つの数値で回転を表現する方法
- ジンバルロックを回避できるのが最大の特徴
- Unityでは回転は内部的に全てクォータニオン
- LerpとSlerpの使い分けが重要
- 回転の掛け算の順番は重要
まずは基本的な使い方から始めて、徐々に高度な機能に挑戦していきましょう。
Unity入門の森では、クォータニオンの基礎から応用まで、実践的な知識を体系的に学べる環境が整っています。
疑問があれば、ぜひ活用してみてください。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。





コメント