Unityでオブジェクトを回転させる際、クォータニオンを使うことで、滑らかで正確な回転が実現できます。
「クォータニオンでどうやって回転させるの?」
「軸と角度から回転を作るには?」
「方向ベクトルから回転を計算するには?」
そんな疑問を抱えている方に向けて、クォータニオンで回転させる方法について、初心者でも理解できるように詳しく解説します。
\読むだけで終わらせない!実際にゲームを作って実力をつけよう/
トレンド×入門に最適
Unity ノンフィールドRPG
+スレスパ風JRPG講座
Unity6対応・スマホ化対応の最新カリキュラム。今もっとも人気のデッキ構築型ゲームをJRPGと組み合わせて実装。初心者が最初に選ぶ一本として最適です。
王道アクションに挑戦
Unity 2Dアクションゲーム
の作り方講座(ロックマン風)
ロックマン風の本格横スクロールACTをスマホ化・広告実装まで対応。7ステージ+ラスボスという市販ゲームに近い本格構成で、リリースまで見据えて作れます。
3D入門に最適
ゼルダ風3Dアクションゲーム
の作り方講座
ゼルダの伝説・モンハン・原神のような3Dアクションをスマホ対応で作れる入門講座。初心者でも全16回でしっかり3D開発の基礎を習得できます。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
クォータニオンでの回転の基本
クォータニオンを使って回転させるには、回転を表すクォータニオンを作成し、Transformに適用します。
Unityでは、transform.rotationプロパティにクォータニオンを設定することで、オブジェクトを回転できます。
基本的な回転の適用
最も基本的な方法は、Quaternion.Eulerを使ってオイラー角からクォータニオンを作成する方法です。
|
1 2 3 |
// オイラー角からクォータニオンを作成して回転 transform.rotation = Quaternion.Euler(0, 90, 0); // Y軸周りに90度回転 |
現在の回転に追加
現在の回転に、追加の回転を加える場合です。
|
1 2 3 4 |
// 現在の回転に追加(ローカル回転) Quaternion additionalRotation = Quaternion.Euler(0, 10, 0); transform.rotation = transform.rotation * additionalRotation; |
- transform.rotationにクォータニオンを設定して回転
- Quaternion.Eulerでオイラー角から変換
- 回転を掛け算することで、複数の回転を組み合わせ可能
- ジンバルロックの問題を回避できる
軸と角度から回転を作成
特定の軸周りに特定の角度だけ回転させる方法を見ていきましょう。
Quaternion.AngleAxisの使い方
Quaternion.AngleAxisを使えば、軸と角度からクォータニオンを作成できます。
|
1 2 3 4 5 6 |
// Y軸周りに90度回転 Vector3 axis = Vector3.up; // Y軸 float angle = 90f; Quaternion rotation = Quaternion.AngleAxis(angle, axis); transform.rotation = rotation; |
実用的な使用例
毎フレーム少しずつ回転させる例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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; } |
方向ベクトルから回転を作成
特定の方向を向く回転を作成する方法を見ていきましょう。
Quaternion.LookRotationの使い方
Quaternion.LookRotationを使えば、方向ベクトルから回転を作成できます。
|
1 2 3 4 5 |
// 前方ベクトルから回転を作成 Vector3 direction = Vector3.forward; Quaternion rotation = Quaternion.LookRotation(direction); transform.rotation = rotation; |
対象に向ける回転
他のオブジェクトの方向を向く回転を作成する例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public Transform target; void Update() { if (target != null) { // 対象への方向を計算 Vector3 direction = (target.position - transform.position).normalized; // その方向を向く回転を作成 transform.rotation = Quaternion.LookRotation(direction); } } |
上方ベクトルの指定
上方ベクトルを指定することで、オブジェクトの傾きを制御できます。
|
1 2 3 4 5 6 |
Vector3 direction = (target.position - transform.position).normalized; Vector3 up = Vector3.up; // 上方向 // 方向と上方向から回転を作成 transform.rotation = Quaternion.LookRotation(direction, up); |
滑らかな回転補間
クォータニオンを使えば、滑らかな回転補間が可能です。
Slerpを使った回転補間
Quaternion.Slerpを使えば、2つの回転の間を滑らかに補間できます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public Transform target; public float rotationSpeed = 5f; void Update() { if (target == null) return; // 目標の方向を計算 Vector3 direction = (target.position - transform.position).normalized; Quaternion targetRotation = Quaternion.LookRotation(direction); // 滑らかに回転 transform.rotation = Quaternion.Slerp( transform.rotation, targetRotation, rotationSpeed * Time.deltaTime ); } |
LerpとSlerpの使い分け
角度が小さい場合はLerp、大きい場合はSlerpが適しています。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Quaternion currentRotation = transform.rotation; Quaternion targetRotation = Quaternion.LookRotation(direction); float angle = Quaternion.Angle(currentRotation, targetRotation); if (angle < 10f) { // 小さい角度はLerp transform.rotation = Quaternion.Lerp(currentRotation, targetRotation, speed * Time.deltaTime); } else { // 大きい角度はSlerp transform.rotation = Quaternion.Slerp(currentRotation, targetRotation, speed * Time.deltaTime); } |
Unityでの実装例(C#コード)
Unityでクォータニオンを使った回転を実装する具体的な例を見ていきましょう。
基本的な回転コントローラー
|
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 |
using UnityEngine; public class QuaternionRotationController : MonoBehaviour { [Header("回転設定")] public float rotationSpeed = 90f; public Vector3 rotationAxis = Vector3.up; [Header("回転モード")] public bool useContinuousRotation = true; public bool useLookAt = false; public Transform lookAtTarget; void Update() { if (useLookAt && lookAtTarget != null) { // 対象を向く Vector3 direction = (lookAtTarget.position - transform.position).normalized; Quaternion targetRotation = Quaternion.LookRotation(direction); transform.rotation = Quaternion.Slerp( transform.rotation, targetRotation, rotationSpeed * Time.deltaTime ); } else if (useContinuousRotation) { // 連続回転 float angle = rotationSpeed * Time.deltaTime; Quaternion deltaRotation = Quaternion.AngleAxis(angle, rotationAxis); transform.rotation = transform.rotation * deltaRotation; } } } |
- 回転の掛け算の順番が重要(右側が先に適用される)
- 連続回転の場合は、現在の回転に掛け算する形にする
- 滑らかな補間にはSlerpを使う
- 方向ベクトルは必ず正規化する
クォータニオンでの回転の実装手順
※この順番を守らずに作り始めると、だいたい後で全部作り直すことになります。
- STEP1回転方法の決定
どのような回転が必要か決定します。軸と角度、方向ベクトル、オイラー角など、適切な方法を選択しましょう。
- STEP2クォータニオンの作成
適切な方法でクォータニオンを作成します。Quaternion.Euler、Quaternion.AngleAxis、Quaternion.LookRotationなどを使用しましょう。
- STEP3回転の適用
作成したクォータニオンをTransformに適用します。transform.rotationに設定するか、現在の回転に掛け算します。
- STEP4滑らかな補間の追加
必要に応じて、Slerpを使って滑らかな補間を追加します。Time.deltaTimeを使って、フレームレートに依存しない補間にしましょう。
- STEP5動作確認と調整
実際に動作を確認し、回転速度や補間速度を調整します。快適な回転になるように調整しましょう。
よくある問題と解決方法
クォータニオンでの回転でよくある問題と、その解決方法を紹介します。
回転の方向が逆になる
回転軸の向きが逆になっている可能性があります。
|
1 2 3 4 5 6 |
// ✅ 正しい方向 Quaternion rotation = Quaternion.AngleAxis(90f, Vector3.up); // ❌ 逆方向 Quaternion rotation = Quaternion.AngleAxis(90f, Vector3.down); |
回転が滑らかでない
Slerpを使うか、補間速度を調整します。
|
1 2 3 4 5 6 |
// Slerpを使う transform.rotation = Quaternion.Slerp(current, target, speed * Time.deltaTime); // 補間速度を調整 public float rotationSpeed = 5f; // 適切な値に調整 |
回転が累積しない
毎回新しい回転を設定している場合は、現在の回転に掛け算します。
|
1 2 3 4 5 6 |
// ✅ 累積する transform.rotation = transform.rotation * deltaRotation; // ❌ 累積しない transform.rotation = deltaRotation; |
- 回転の方向が逆 → 回転軸の向きを確認する
- 回転が滑らかでない → Slerpを使う、補間速度を調整する
- 回転が累積しない → 現在の回転に掛け算する形にする
- 意図しない軸で回転 → 回転軸の設定を確認する
クォータニオンでの回転の学習を深めるには
クォータニオンでの回転の基礎を理解した後は、さらに深く学んでいくことが大切です。
Unity入門の森では、ゲーム開発に必要な数学の知識を体系的に学べる環境が整っています。
特に、永久会員チケットでは、クォータニオンや回転に関する知識を幅広くカバーしています。
また、2Dアクションゲーム講座では、実際にゲームを作りながら、回転の実践的な使い方を身につけられます。
回転の基礎から応用まで、実際のコードと紐付けて学べるので、理解が深まりやすいはずです。
- クォータニオンでの基本的な回転方法
- 軸と角度から回転を作成する方法
- 方向ベクトルから回転を作成する方法
- 滑らかな回転補間の実装方法
- Unityでの実装例(C#コード)
記事を読んで「作ってみたい!」と思ったら!人気ゲームを題材にした講座で実力をつけよう
知識を読むだけで終わらせるのはもったいない。実際に手を動かしてゲームを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開発の壁を一気に突破!スマホで動くオリジナルゲームを完成させよう!
まとめ

この記事では、クォータニオンで回転させる方法について解説しました。
クォータニオンを使えば、軸と角度、方向ベクトル、オイラー角など、様々な方法で回転を作成できます。
Slerpを使うことで、滑らかな回転補間も実現可能です。
「クォータニオンでの回転って難しそう💧」と感じる方もいるかもしれませんが、Unityの便利な機能を使えば、比較的簡単に実装できます。
まずは基本的な回転から始めて、徐々に高度な機能に挑戦していきましょう。
- transform.rotationにクォータニオンを設定して回転
- Quaternion.AngleAxisで軸と角度から回転を作成
- Quaternion.LookRotationで方向ベクトルから回転を作成
- Slerpを使って滑らかな回転補間を実現
- 回転を掛け算することで、複数の回転を組み合わせ可能
まずは基本的な回転から始めて、徐々に高度な機能に挑戦していきましょう。
Unity入門の森では、クォータニオンでの回転の基礎から応用まで、実践的な知識を体系的に学べる環境が整っています。
疑問があれば、ぜひ活用してみてください。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。





コメント