3Dゲームでオブジェクトを回転させたいけど、どうやってクォータニオンを使えばいいのか分からない。
UnityのTransform.rotationはクォータニオン型だけど、実際にどう操作すればいいのか。
実は、クォータニオンを使った回転処理は、Unityの関数を活用すれば簡単に実装できます。
LookRotationやSlerpなどの関数を使うことで、様々な回転処理を実現できます。
この記事では、クォータニオンで回転を扱う考え方を、Unity実装例とともに解説します。
- クォータニオンで回転を扱う方法が分からない…
- UnityのTransform.rotationがクォータニオン型だが、どう操作すればいいか分からない。
- 様々な回転処理を実装する方法を知りたい。
✨ この記事でわかること
- クォータニオンを使った基本的な回転処理
- LookRotationを使った方向指定の回転
- Slerpを使った滑らかな回転補間
- Unityでの回転処理の実装方法
- 初心者でも理解できる回転の考え方
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます
クォータニオン回転とは何か(ゲーム制作目線)

クォータニオン回転は、クォータニオンを使って3D空間でオブジェクトを回転させる処理です。
UnityのTransform.rotationプロパティは、クォータニオン型で、オブジェクトの回転状態を管理しています。
クォータニオンを使うことで、ジンバルロックを回避しながら、滑らかな回転処理を実現できます。
回転軸と回転角度を組み合わせた表現により、どのような回転でも正確に表現できますね。
ゲームでの具体的な使い道

クォータニオン回転が、ゲームでどう使われているか確認してみましょう。
オブジェクトの向き変更
キャラクターやオブジェクトが、移動方向やターゲット方向に向きを変える際、クォータニオン回転が使われます。
LookRotation関数を使って、指定した方向を向くクォータニオンを作成できます。
カメラの回転制御
FPSゲームなどで、マウスの動きに合わせてカメラを回転させる際、クォータニオン回転が使われます。
オイラー角を使うとジンバルロックが発生する可能性がありますが、クォータニオンなら回避できます。
滑らかな回転アニメーション
オブジェクトを滑らかに回転させるアニメーションでは、Slerpを使って、2つの回転状態の間を補間します。
クォータニオンを使った補間は、常に最短経路で滑らかに回転します。
複雑な回転パターン
複数の軸で回転させる場合や、回転の合成を行う場合、クォータニオンが威力を発揮します。
オイラー角では計算が複雑になる場合でも、クォータニオンなら掛け算で簡単に合成できますね。
- キャラクターやオブジェクトの向き変更
- FPSカメラの回転制御
- 滑らかな回転アニメーション
- 複雑な回転パターンの実現
作り方は分かった。
でも完成まで行けない人へ
当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。
※ まずは内容を見るだけでOK
考え方・仕組みを図解イメージで説明

クォータニオン回転は、回転軸と回転角度を組み合わせた表現です。
回転軸と角度での表現
クォータニオンは、回転軸(ベクトル)と回転角度から作成できます。
UnityのQuaternion.AngleAxis関数を使うと、回転軸と角度からクォータニオンを作成できます。
方向ベクトルからの回転
特定の方向を向くクォータニオンを作成する場合、LookRotation関数を使います。
方向ベクトルから、その方向を向くクォータニオンを自動的に計算してくれます。
回転の補間
2つの回転状態の間を滑らかに補間する場合、Slerp関数を使います。
線形補間(Lerp)とは異なり、球面上の最短経路で補間するため、常に滑らかです。
回転の適用順序
複数の回転を適用する場合、掛け算で合成します。
回転の順番が重要で、順番が変わると結果も変わります。
- クォータニオン回転は、回転軸と角度を組み合わせた表現
- LookRotationで方向ベクトルから回転を取得できる
- Slerpで滑らかな回転補間が可能
- 回転の適用順序が重要
Unityで実装する際の注意点(代表例)

Unityでクォータニオン回転を実装する場合の注意点を見ていきましょう。
基本的な回転設定
Transform.rotationにクォータニオンを設定すれば、オブジェクトを回転させます。
|
1 2 3 4 5 6 |
// オイラー角からクォータニオンに変換 transform.rotation = Quaternion.Euler(0, 90, 0); // 回転軸と角度からクォータニオンを作成 transform.rotation = Quaternion.AngleAxis(90, Vector3.up); |
LookRotationによる方向指定
指定した方向を向くクォータニオンを作成します。
|
1 2 3 4 5 6 7 8 |
// ターゲットの方向を向く Vector3 direction = target.position - transform.position; transform.rotation = Quaternion.LookRotation(direction); // 上方向も指定する場合 Vector3 up = Vector3.up; transform.rotation = Quaternion.LookRotation(direction, up); |
Slerpによる滑らかな回転
現在の回転から目標の回転へ、滑らかに補間します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class SmoothRotation : MonoBehaviour { public Transform target; public float rotationSpeed = 2f; void Update() { Vector3 direction = target.position - transform.position; Quaternion targetRotation = Quaternion.LookRotation(direction); // 滑らかに回転 transform.rotation = Quaternion.Slerp( transform.rotation, targetRotation, Time.deltaTime * rotationSpeed ); } } |
現在の回転からの相対回転
現在の回転に対して、相対的に回転を追加します。
|
1 2 3 4 5 6 7 8 9 |
// 現在の回転を取得 Quaternion currentRotation = transform.rotation; // 追加で回転させる Quaternion additionalRotation = Quaternion.Euler(0, 90, 0); // 現在の回転に追加の回転を合成 transform.rotation = currentRotation * additionalRotation; |
マウス入力によるカメラ回転
マウスの動きに合わせてカメラを回転させる実装です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class MouseLook : MonoBehaviour { public float sensitivity = 2f; private float rotationX = 0; void Update() { float mouseX = Input.GetAxis("Mouse X") * sensitivity; float mouseY = Input.GetAxis("Mouse Y") * sensitivity; rotationX -= mouseY; rotationX = Mathf.Clamp(rotationX, -90, 90); transform.localRotation = Quaternion.Euler(rotationX, 0, 0); transform.parent.Rotate(0, mouseX, 0); } } |
回転軸と角度での回転
回転軸と角度を指定して回転させます。
|
1 2 3 4 5 6 7 |
// Y軸周りに90度回転 transform.rotation = Quaternion.AngleAxis(90, Vector3.up); // 任意の軸周りに回転 Vector3 axis = new Vector3(1, 1, 0).normalized; transform.rotation = Quaternion.AngleAxis(45, axis); |

まとめ

この記事では、クォータニオンで回転を扱う考え方について見てきました。
重要なポイントをおさらいします。
- クォータニオン回転は、回転軸と角度を組み合わせた表現で、ジンバルロックを回避できる
- LookRotationで方向ベクトルから回転を取得できる
- Slerpで滑らかな回転補間が可能
- 回転の合成は掛け算で行い、適用順序が重要
- Unityの関数を活用すれば、様々な回転処理を簡単に実装できる
クォータニオン回転は、3Dゲーム開発で欠かせない技術です。
Unityの関数を活用すれば、様々な回転処理を簡単に実装できます。
まずは基本的な使い方から覚えて、徐々に複雑な回転処理にも挑戦してみましょう。
実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。
Unity入門の森では、クォータニオンを含む回転処理を、実際のゲーム実装とともに体系的に学べます。
ぜひチェックしてみてください。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます





コメント