ゲーム数学を「使える力」に変えよう!ゲーム講座PDF無料プレゼント中>>

FPSカメラの回転計算が分かる|マウス入力で視点が動く仕組み

回転処理の数学|クォータニオンをゲームで使いこなす

FPS(ファーストパーソンシューティング)ゲームで、マウスを動かすと視点が滑らかに回転する仕組みを実装したい。

でも、どうやってマウスの動きをカメラの回転に変換すればいいのか分からない。

そんな悩みを抱えていませんか。

FPSカメラの回転計算では、マウスの移動量を角度に変換し、それをクォータニオンで回転として適用します。

この記事では、FPSカメラの回転計算の仕組みを、Unity実装例とともに見ていきましょう。

【ゲームの作り方講座もプレゼント中!】

FPSカメラの回転計算とは何か(ゲーム制作目線)

FPSカメラの基本構造

FPSカメラの回転計算は、プレイヤーの視点を自由に動かすための処理です。

マウスの上下移動でカメラを上下に回転させ、左右移動でカメラを左右に回転させます。

2Dのマウス座標を、3D空間でのカメラの回転に変換するのが核心です。

FPSゲームでは、プレイヤーが首を動かしているような感覚を再現します。

上下の回転(ピッチ)には制限を設けることが多く、上を向きすぎたり下を向きすぎたりしないようにします。

左右の回転(ヨー)は、通常360度自由に回転できるようにします。

Unityでは、Transformのrotationプロパティにクォータニオンを設定すれば、カメラの回転を実現します。

マウスの移動量を感度(sensitivity)で調整し、それをオイラー角に変換して、さらにクォータニオンに変換するという流れになります。

ゲームでの具体的な使い道

FPSカメラのゲームでの使用例

FPSカメラの回転計算が、ゲームでどう使われているか確認してみましょう。

ファーストパーソンシューティングゲーム

Call of DutyやValorantなどのFPSゲームでは、プレイヤーがマウスを動かすと、それに応じて視点が回転します。

マウスの感度を調整できるようになっており、プレイヤーの好みに合わせて設定できます。

滑らかな回転と、感度の調整ができることが重要ですね。

TPS(サードパーソンシューティング)ゲーム

フォートナイトやPUBGなどのTPSゲームでも、カメラの回転計算が使われます。

ただし、TPSではカメラがプレイヤーの背後にあるため、回転の計算方法が少し異なります。

カメラの回転だけでなく、プレイヤーキャラクターの向きも連動して回転させることが多いです。

アクションゲームでのカメラ視点

アクションゲームでも、自由視点モードでカメラを回転させることがあります。

戦闘中のカメラ操作や、探索時の視点調整など、様々な場面で活用されます。

エディタツールでのカメラ操作

Unityのシーンビューや、ゲームエンジンのエディタでも、同様のカメラ回転計算が使われています。

開発者がゲームシーンを確認する際、自由にカメラを動かせるようにするための仕組みです。

FPSカメラ回転の重要な要素

  • マウス移動量の取得(Input.mouseDeltaなど)
  • 感度(sensitivity)による調整
  • 上下回転(ピッチ)の制限
  • クォータニオンを使った回転の適用

作り方は分かった。
でも完成まで行けない人へ

当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。

買い切り 全講座 今後追加も無料
永久会員チケットを見てみる

※ まずは内容を見るだけでOK

考え方・仕組みを図解イメージで説明

FPSカメラの回転計算の仕組み

FPSカメラの回転計算は、「マウスの移動量→角度→回転」という変換の流れで理解できます。

マウス移動量の取得

Unityでは、Input.GetAxis(“Mouse X”)Input.GetAxis(“Mouse Y”)で、マウスの移動量を取得できます。

この値は、フレームごとの移動量を表しており、マウスを動かした分だけ値が大きくなります。

感度による調整

マウスの移動量をそのまま使うと、感度が高すぎたり低すぎたりするため、感度(sensitivity)を掛け算して調整します。

感度が高いほど、少しのマウス移動で大きくカメラが回転します。

感度が低いほど、マウスを大きく動かしても、カメラの回転は小さめになります。

オイラー角への変換

マウスの移動量から、カメラの回転角度(オイラー角)を計算します。

現在の回転角度に、マウスの移動量×感度を加算すれば、新しい回転角度が求められます。

上下回転(pitch)には制限を設け、-90度から90度の範囲に収めることが多いです。

クォータニオンへの変換 計算したオイラー角を、クォータニオンに変換して、Transformのrotationに設定します。 Unityでは、Quaternion.Euler関数を使って、オイラー角からクォータニオンを生成できます。 ⚠️ 重要なポイント マウスの移動量を感度で調整してから角度に変換する 上下回転には制限を設ける(ジンバルロックや不自然な回転を防ぐため) クォータニオンを使うことで、滑らかな回転が可能になる 左右回転と上下回転は、別々に計算してから合成する Unityで実装する際の注意点(代表例)

UnityでのFPSカメラの実装

UnityでFPSカメラの回転を実装する際の注意点を見ていきましょう。

基本的な実装コード

FPSカメラの回転計算を実装する基本的なコードです。

マウス感度の調整

マウス感度は、プレイヤーの好みに合わせて調整できるようにすることが重要です。

設定画面で感度を変更できるようにし、その値をPlayerPrefsなどに保存しておくと、次回起動時も設定が保持されます。

感度の目安として、2.0〜5.0の範囲が一般的です。

カーソルのロック

FPSゲームでは、マウスカーソルが画面中央に固定され、見えない状態にするのが一般的です。

Unityでは、Cursor.lockState = CursorLockMode.Lockedでカーソルをロックできます。

これにより、マウスを動かしてもカーソルが移動せず、カメラだけが回転します。

上下回転の制限

上下回転に制限を設けないと、カメラが裏返ってしまい、操作が不自然になります。

Mathf.Clamp関数を使って、回転角度を-90度から90度の範囲に制限します。

これにより、上を向きすぎたり下を向きすぎたりすることを防げます。

カメラの初期設定

FPSカメラは、通常プレイヤーキャラクターの子オブジェクトとして配置されます。

カメラの位置は、プレイヤーの目の位置(高さ1.6m程度)に設定するのが一般的です。

また、カメラのProjectionモードはPerspective(透視投影)に設定します。

博士
博士
FPSカメラの実装は、最初は複雑に感じるかもしれませんが、基本的な流れを理解すれば、応用が利くようになります。まずはシンプルな実装から始めて、徐々に機能を追加していきましょう。頑張ってください!

まとめ

FPSカメラのまとめ

この記事では、FPSカメラの回転計算について見てきました。

重要なポイントをおさらいします。

重要なポイント:

  • FPSカメラの回転計算は、マウスの移動量を角度に変換し、クォータニオンで回転として適用する
  • マウスの移動量は感度で調整し、上下回転には制限を設ける
  • 左右回転(ヨー)は360度自由に、上下回転(ピッチ)は-90度〜90度に制限するのが一般的
  • UnityではInput.GetAxis(“Mouse X/Y”)でマウス移動量を取得し、Quaternion.Eulerで回転を適用する
  • カーソルのロックや、感度の調整機能を実装すれば、より実用的なFPSカメラになる

FPSカメラの回転計算は、FPSゲームの基本となる重要な技術です。

マウス入力からカメラの回転への変換を理解すれば、様々なタイプのカメラ制御に応用できます。

カメラ制御だけでなく、3Dゲーム全般で使う回転処理の基礎にもなります。

実装とセットで学ぶことで、理解が深まるはずです。

Unity入門の森では、FPSカメラを含む様々なカメラ制御を、実際のゲーム実装とともに学べます。

ぜひチェックしてみてください。

ゲーム制作を“理解しながら”始めたい方へ
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます

【ゲームの作り方講座もプレゼント中!】

コメント

タイトルとURLをコピーしました