趣味で終わらせたくない方へ。現場レベルの「ゲーム制作講座PDF」を無料プレゼント中!▶

FPSの視点操作はどう作る?|マウス対応カメラ制御の設計ポイント

FPS・TPS・シューティングゲームの作り方

FPSの視点操作を作りたい。
でも、「マウスでカメラを動かす処理が難しい」そんな風に感じていませんか。

実は、FPSの視点操作は、マウスの入力をカメラの回転に変換する処理で実現できます。
Unityを使えば、初心者でもカメラ制御システムを作ることができるでしょう。

この記事では、FPSの視点操作を実装する方法を、コピペで動くサンプルコードとともに詳しく解説します。

この記事でわかること

  • FPSカメラ制御の基本的な実装方法(所要1時間)
  • マウス入力とカメラ回転の連動処理(所要1時間)
  • 上下左右の視点移動と回転制限の実装(所要1時間)
  • FPSカメラ制御でよくあるエラー5選と解決方法
  • 実用的なカメラシステム完成までの4ステップ(合計5時間)
ゲーム開発講師
ゲーム開発講師

最初は左右の回転だけから始めて、徐々に上下の回転を追加するのがコツです。段階的に進めましょう。

\あなたにピッタリのFPS・TPSゲーム制作講座を見つけよう!/

おすすめ第1位

Unity FPSゲームの
作り方講座

★★★★★ (スマホ・VR対応)

FPS・スマホ・VRの3プラットフォームに同時対応。1本作るだけで3つのゲームが完成する圧倒的な開発体験が魅力の講座です。

講座を購読する \1本作ってFPS・VR・スマホを同時に制覇!/

初心者にもおすすめ

Unity ノンフィールドRPG
+スレスパ風JRPG講座

★★★★★ (Unity6対応)

Unity6対応・スマホ化対応の三拍子。トレンドのデッキ構築型システムを最速で実装できます。初心者が最初に学ぶ一本として最適です。

講座を購読する \スマホ対応!初心者から最速で1本完成させる/

会話システムも学べる

Unity ノベルゲームの
作り方講座

★★★★★ (全14回)

かまいたちの夜・ダンガンロンパ風のノベルゲームをゼロから開発。会話システム・シナリオ分岐・セーブ機能まで、他ジャンルにも応用できるUIスキルが身につきます。

講座を購読する \会話システムを極めて全ジャンルに応用しよう/
ゲームを「遊ぶ側」から「作る側」へ

あなたのオリジナルゲーム、今年こそ完成させませんか?

RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。

Unity入門の森|永久会員チケット

永久会員チケット|Unity入門の森

全講座ラインナップを見てみる

実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。

  1. FPSカメラ制御とは?基礎知識から理解する
    1. FPSカメラ制御に必要な要素
  2. Unityを使ったFPSカメラ制御の実装方法
    1. 実装手順:基本的なカメラ制御システムを作る
    2. より高度なカメラ制御の実装
  3. カメラ制御の設計ポイント
    1. 回転制限の重要性
    2. 感度調整の実装
    3. 左右と上下の回転の分離
    4. マウスカーソルのロック
  4. カメラ制御の最適化と応用
    1. フレームレートに依存しない回転
    2. カメラの揺れ(カメラシェイク)の実装
  5. FPSカメラ制御でよくある失敗5選と解決方法
    1. 失敗1:マウスが動かない
    2. 失敗2:上下の回転が逆になる
    3. 失敗3:カメラが360度回転してしまう
    4. 失敗4:回転速度が速すぎる/遅すぎる
    5. 失敗5:カメラがプレイヤーと一緒に回転しない
    6. 初心者がよくやる勘違い
  6. 実用的なカメラシステム完成までの4ステップ
    1. 実装時のチェックリスト
  7. FPS・TPSゲームを作りたいなら!Unity入門の森の講座で本格3Dゲーム開発に挑戦しよう
    1. Unity FPSゲームの作り方講座【全17回!FPS・VR・スマホの3プラットフォームを同時に作れる!】
    2. Unity ノンフィールドRPG+スレスパ風JRPG講座【Unity6対応!デッキ構築×JRPGをスマホ向けに作れる!】
    3. Unity ノベルゲームの作り方講座【全14回!会話システムからシナリオ分岐まで他ジャンルにも応用できるUIスキルが身につく!】
  8. まとめ

FPSカメラ制御とは?基礎知識から理解する

FPSカメラ制御とは?基礎知識と用語解説

FPSカメラ制御とは、プレイヤーがマウスを動かすことで、視点(カメラ)が回転するシステムのことです。
FPSゲームでは必須の機能です。

FPSカメラ制御を実装するには、マウス入力の取得カメラの回転処理が重要になります。

マウスの移動量を取得し、それをカメラの回転角に変換します。

上下の回転には制限を設けることで、自然な視点操作を実現できるでしょう。

FPSゲームでは、プレイヤーがマウスを動かすと、視点がそれに応じて動く必要があります。

この処理を実装することで、直感的な操作が可能になります。

カメラ制御は、FPSゲームの操作性に大きく影響する重要な要素です。

FPSカメラ制御に必要な要素

FPSカメラ制御に必要な要素

  • マウス入力の取得:マウスの移動量を取得する処理(所要時間:30分)
  • カメラの回転処理:マウス入力に応じてカメラを回転させる処理(所要時間:1時間)
  • 回転制限:上下の回転角に制限を設ける処理(所要時間:30分)
  • 感度調整:マウスの感度を調整する処理(所要時間:30分)

マウス入力の取得は、Input.GetAxis(“Mouse X”)とInput.GetAxis(“Mouse Y”)を使って行います。

カメラの回転処理は、取得したマウス入力に応じてカメラを回転させる処理。

回転制限は、上下の回転角に制限を設けることで、自然な視点操作を実現します。

感度調整は、プレイヤーの好みに応じて調整できるようにする処理です。

Unityを使ったFPSカメラ制御の実装方法

Unityを使ったFPSカメラ制御の実装方法

Unityを使ったFPSカメラ制御を実装する方法を解説します。
ここでは、コピペで動くサンプルコードを紹介します。

実装手順:基本的なカメラ制御システムを作る

ステップ1:カメラの配置(所要10分)

  1. Main CameraをPlayerオブジェクトの子オブジェクトにする
  2. Main CameraのPositionを(0, 1.6, 0)に設定(目の高さ)
  3. Main CameraのRotationを(0, 0, 0)に設定

カメラをPlayerの子オブジェクトにすることで、プレイヤーと一緒に移動するようになります。

Positionを(0, 1.6, 0)に設定することで、プレイヤーの目の高さにカメラが配置されます。

Rotationを(0, 0, 0)に設定することで、初期状態でのカメラの向きを設定します。

ステップ2:カメラ制御スクリプトの作成(所要30分)

以下のコードで、マウスで視点を動かすことができます。

配置場所:Main Cameraオブジェクトにアタッチ

確認方法:再生ボタンを押して、マウスを動かして視点が回転すればOK

mouseSensitivityは、マウスの感度を調整するパラメータ。

upDownRangeは、上下の回転角の制限値。

verticalRotationは、上下の回転角を保持する変数です。

Cursor.lockStateをCursorLockMode.Lockedに設定することで、マウスカーソルを画面中央に固定します。

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

⚠️ よくあるエラー

  • マウスが動かない → Cursor.lockStateがCursorLockMode.Lockedになっているか確認(Start関数で設定する)
  • 上下の回転が逆 → mouseYの符号を反転(verticalRotation += mouseY;に変更)
  • 回転速度が速すぎる/遅すぎる → mouseSensitivityの値を調整(通常は1.0f〜3.0fが適切)
  • カメラが回転しない → Main Cameraにスクリプトがアタッチされているか確認

より高度なカメラ制御の実装

基本的なカメラ制御に加えて、より高度な機能を追加できます。

例えば、マウス感度を設定から変更できるようにしたり、カメラの揺れを追加したりできます。

この実装では、Y軸の反転オプションと、マウス感度を動的に変更する機能を追加しています。

これにより、プレイヤーが好みに応じて設定を変更できるようになります。

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

カメラ制御の設計ポイント

カメラ制御の設計ポイント

FPSカメラ制御を実装する際の設計ポイントを解説します。
自然な視点操作を実現するための重要なポイントです。

回転制限の重要性

上下の回転には制限を設けましょう。

制限がないと、カメラが上下に360度回転してしまい、操作が混乱します。

upDownRangeを60度程度に設定することで、自然な視点操作が可能になります。

Mathf.Clamp関数を使って、verticalRotationを-upDownRangeからupDownRangeの範囲に制限します。

これにより、カメラが上下に360度回転することを防げます。

一般的には、upDownRangeを60〜90度程度に設定することが多いです。

感度調整の実装

マウスの感度は、プレイヤーの好みに応じて調整できるようにします。

mouseSensitivityの値を変更することで、感度を調整できます。

一般的には、1.0f〜3.0fの範囲が適切でしょう。

感度が高すぎると、微細な調整が難しくなり、感度が低すぎると、素早いターンができなくなります。

プレイヤーの好みに応じて、設定から変更できるようにすることが重要です。

左右と上下の回転の分離

FPSカメラ制御では、左右の回転と上下の回転を分離することが重要です。

左右の回転は、プレイヤーオブジェクト(親オブジェクト)を回転させます。

上下の回転は、カメラオブジェクト(子オブジェクト)を回転させます。

これにより、プレイヤーの向きとカメラの向きを独立して制御できます。

transform.parent.Rotate(0, mouseX, 0)で、プレイヤーを左右に回転させます。

playerCamera.transform.localRotationで、カメラを上下に回転させます。

マウスカーソルのロック

FPSゲームでは、マウスカーソルを画面中央にロックすることが重要です。

Cursor.lockState = CursorLockMode.Lockedを設定することで、カーソルをロックできます。

これにより、マウスを動かしてもカーソルが画面から外れなくなります。

また、ESCキーなどを押した時に、Cursor.lockState = CursorLockMode.Noneに設定することで、カーソルのロックを解除できます。

マウスカーソルがロックされていないと、カメラ制御が正しく動作しない場合があります。

カメラ制御の最適化と応用

カメラ制御の最適化と応用

カメラ制御の最適化と応用について解説します。
より高度な機能を追加することで、本格的なカメラシステムを実装できます。

フレームレートに依存しない回転

現在の実装では、フレームレートに依存して回転速度が変わってしまいます。

Time.deltaTimeを使うことで、フレームレートに依存しない回転を実装できます。

Time.deltaTimeを使うことで、フレームレートに関係なく一定の回転速度になります。

ただし、多くのFPSゲームでは、Time.deltaTimeを使わない実装が一般的。

プレイヤーが慣れ親しんだ感覚を提供できるため、Time.deltaTimeを使わない実装も有効です。

カメラの揺れ(カメラシェイク)の実装

カメラの揺れを追加することで、よりリアルな体験を提供できます。

例えば、足音や被弾時の揺れを追加できます。

この実装では、Shake関数を呼び出すことで、カメラを揺らせます。

足音や被弾時に呼び出すことで、よりリアルな体験を提供できます。

FPSカメラ制御でよくある失敗5選と解決方法

FPSカメラ制御でよくある失敗5選と解決方法

FPSカメラ制御を実装する際、初心者が陥りやすい失敗があります。
ここでは、5つのよくある失敗と解決方法を紹介します。

失敗1:マウスが動かない

よくある失敗

  • Cursor.lockStateが設定されていない
  • Input.GetAxisが正しく動作していない
  • スクリプトがアタッチされていない
  • Update関数が呼ばれていない

マウスが動かない場合、Cursor.lockStateの設定やスクリプトのアタッチを確認しましょう。

Start関数でCursor.lockStateを設定し、Update関数でInput.GetAxisを呼び出すことが重要です。

正しいアプローチ

  • Start関数でCursor.lockStateを設定(Cursor.lockState = CursorLockMode.Locked)
  • Update関数でInput.GetAxisを呼び出す(Input.GetAxis(“Mouse X”)、Input.GetAxis(“Mouse Y”))
  • Main Cameraにスクリプトをアタッチ
  • スクリプトが有効になっているか確認(Inspectorでチェック)

失敗2:上下の回転が逆になる

上下の回転が逆になる場合、mouseYの符号を反転することで解決できます。

プレイヤーの好みに応じて調整してみましょう。

解決方法

  • mouseYの符号を反転する(verticalRotation += mouseY;に変更)
  • プレイヤーの好みに応じて調整する(invertYオプションを追加)
  • 一般的には負の値を使うことが多い(verticalRotation -= mouseY;
  • 設定から変更できるようにする

失敗3:カメラが360度回転してしまう

カメラが360度回転してしまう場合、回転制限が正しく実装されていない可能性があります。

Mathf.Clamp関数を使って、回転角を制限することが重要です。

⚠️ 解決方法

  • Mathf.Clamp関数を使って回転角を制限する(verticalRotation = Mathf.Clamp(verticalRotation, -upDownRange, upDownRange))
  • upDownRangeの値を適切に設定する(通常は60〜90度)
  • verticalRotationが正しく更新されているか確認する
  • 回転制限が適用されているか確認する(デバッグログで確認)

失敗4:回転速度が速すぎる/遅すぎる

回転速度が適切でない場合、mouseSensitivityの値を調整することで解決できます。

一般的には、1.0f〜3.0fの範囲が適切です。

解決方法

  • mouseSensitivityの値を調整する(通常は1.0f〜3.0f)
  • プレイヤーの好みに応じて設定から変更できるようにする
  • Time.deltaTimeを使わない実装が一般的(FPSゲームでは慣れ親しんだ感覚を提供)
  • テストプレイで最適な値を探す

失敗5:カメラがプレイヤーと一緒に回転しない

カメラがプレイヤーと一緒に回転しない場合、親子関係や回転処理を確認することが重要です。

⚠️ 解決方法

  • Main CameraがPlayerの子オブジェクトになっているか確認する
  • 左右の回転でtransform.parent.Rotateを使っているか確認する
  • 上下の回転でtransform.localRotationを使っているか確認する
  • 親子関係が正しく設定されているか確認する

初心者がよくやる勘違い

初心者がよくやる勘違いとして、左右と上下の回転を同じオブジェクトで処理しようとすることがあります。

左右の回転は親オブジェクト(プレイヤー)、上下の回転は子オブジェクト(カメラ)で処理することが重要です。

また、回転制限を設定し忘れる場合もあります。

回転制限を設定しないと、カメラが360度回転してしまい、操作が混乱します。

実用的なカメラシステム完成までの4ステップ

実用的なカメラシステム完成までの4ステップ

カメラシステム完成までの4ステップ
  • STEP1
    カメラの配置(所要30分)

    Main CameraをPlayerの子オブジェクトにして、目の高さに配置する。
    Positionを(0, 1.6, 0)に設定し、Rotationを(0, 0, 0)に設定する。
    学べること:カメラの配置、親子関係、Transformの設定
    成果物:プレイヤーの視点にカメラが配置された環境
  • STEP2
    左右の回転処理(所要1時間)

    マウスの横移動に応じてプレイヤーを左右に回転させる。
    Input.GetAxis(“Mouse X”)でマウスの横移動を取得し、transform.parent.Rotateで回転させる。
    学べること:マウス入力、回転処理、Input.GetAxisの使い方
    成果物:左右の視点移動ができるシステム
  • STEP3
    上下の回転処理(所要1時間)

    マウスの縦移動に応じてカメラを上下に回転させる。
    Input.GetAxis(“Mouse Y”)でマウスの縦移動を取得し、Mathf.Clampで回転角を制限する。
    学べること:カメラの回転、回転制限、Mathf.Clampの使い方
    成果物:上下左右の視点移動ができるシステム
  • STEP4
    感度調整と最適化(所要1時間)

    マウスの感度を調整し、操作感を最適化する。
    mouseSensitivityの値を調整し、プレイヤーの好みに応じて設定から変更できるようにする。
    学べること:パラメータ調整、UI連携、設定の保存
    成果物:実用的なカメラシステム

合計5時間で、実用的なカメラシステムが完成します。

実装時のチェックリスト

実装時のチェックリスト

  • Main CameraがPlayerの子オブジェクトになっているか
  • Cursor.lockStateがCursorLockMode.Lockedに設定されているか
  • Input.GetAxis(“Mouse X”)とInput.GetAxis(“Mouse Y”)が正しく動作しているか
  • 回転制限が正しく実装されているか(Mathf.Clampを使用)
  • 左右の回転でtransform.parent.Rotateを使っているか
  • 上下の回転でtransform.localRotationを使っているか
  • mouseSensitivityの値が適切か(1.0f〜3.0f)
  • テストプレイで操作感が自然か

FPS・TPSゲームを作りたいなら!Unity入門の森の講座で本格3Dゲーム開発に挑戦しよう

Unity入門の森には、FPS・VR・スマホ対応など幅広いプラットフォームに対応した3Dゲーム制作講座が揃っています。作りたいゲームや目標スキルに合わせて選んでみてください。

Unity FPSゲームの作り方講座【全17回!FPS・VR・スマホの3プラットフォームを同時に作れる!】

Unity FPSゲームの作り方講座

  • APEX・バトルフィールド風のFPSゲームをゼロから開発
  • FPS・スマホ・VRの3プラットフォームに同時対応
  • 書籍では学べないVR対応弓矢FPSのオリジナリティ高い開発手法
  • 地上・空中の敵AIや弓矢チャージショットなど本格システムを実装
  • 初心者でも安心の丁寧な解説と完成プロジェクトファイル付き

Unity FPSゲームの作り方講座は、APEX・バトルフィールド・Call of Dutyのような一人称視点のFPSゲームを作るための講座です。

弓矢を使ったオリジナリティの高いFPSをベースに、PC・スマホ・VRの3プラットフォームに同時対応した開発手法を全17回で習得できます。VR空間で弓を構えて矢を射るという高度なアクションの実装まで、書籍では学べないスキルが身につきます。

1本の講座でFPS・スマホ・VRを同時に作れるのはこの講座ならでは。3Dゲーム開発の幅を一気に広げたい方にもおすすめです。

FPS・スマホ・VRの3プラットフォームを同時に完成させる
1本作るだけで3つのゲームが完成する圧倒的な開発体験を手に入れよう
→ Unity FPSゲームの作り方講座を見てみる
書籍では学べないVR対応FPSで、一歩先の3Dゲーム開発スキルを今すぐ!

Unity ノンフィールドRPG+スレスパ風JRPG講座【Unity6対応!デッキ構築×JRPGをスマホ向けに作れる!】

Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座

  • Unity6対応・スマホ化対応で最新環境のゲーム開発が学べる
  • Slay the Spire風のデッキ構築システム×JRPGの組み合わせを実装
  • 初心者でも取り組みやすい丁寧な解説構成
  • ノンフィールドRPGとデッキ構築JRPGの2つを合わせて学ぶのがおすすめ

Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座は、今もっともトレンドのデッキ構築型ゲームシステムをJRPGと組み合わせて実装する方法を学べる講座です。

Unity6対応・スマホ化対応の最新カリキュラムで、デッキ構築の核となるシステムをしっかり習得できます。FPSで培った3D開発の知識と組み合わせることで、ゲーム開発の幅がさらに広がります。

「Slay the Spireみたいなゲームを自分でも作ってみたい!」という人の最初の一歩として最適な講座です。

Unity6対応・スマホ化対応の最新カリキュラム
トレンドのデッキ構築×JRPGを最速で実装しよう
→ Slay the Spire風デッキ構築JRPG講座を見てみる
スマホ対応の最新環境で、ゲーム開発の第一歩を踏み出そう!

Unity ノベルゲームの作り方講座【全14回!会話システムからシナリオ分岐まで他ジャンルにも応用できるUIスキルが身につく!】

Unity ノベルゲームの作り方講座

  • かまいたちの夜・ダンガンロンパ・逆転裁判風のゲームをゼロから開発
  • テキスト文字送り・選択肢・シナリオ分岐・セーブまで完全実装
  • Googleスプレッドシートを使ったシナリオ管理システムを習得
  • 会話システム・UI遷移は他ジャンルのゲームにも応用可能
  • 初心者から上級者まで対応の丁寧な解説とソースコード付き

Unity ノベルゲームの作り方講座は、かまいたちの夜・ひぐらしのなく頃に・ダンガンロンパ・逆転裁判のようなテキスト主体のゲームを作るための講座です。

会話システム・シナリオ分岐・セーブ機能はもちろん、UniTaskを用いた非同期処理やGoogleスプレッドシートを使ったシナリオ管理など、中・上級者のスキルアップにも直結する実践的な開発テクニックが身につきます。

ノベルゲームに限らず、会話システムやUI遷移はあらゆるジャンルに使える汎用スキル。FPS開発と組み合わせてゲーム開発の引き出しをさらに広げたい人におすすめです。

会話システム・シナリオ分岐・セーブまで完全実装
ノベルゲームで身につくUIスキルは全ジャンルの武器になる
→ Unity ノベルゲームの作り方講座を見てみる
汎用性の高いUIスキルを今すぐ習得して開発の幅を広げよう!

まとめ

FPSの視点操作はどう作る?まとめ

FPSの視点操作は、マウス入力とカメラ回転を組み合わせることで実現できます。

Unityを使えば、初心者でもカメラ制御システムを作ることができるでしょう。

記事の要点まとめ

    • カメラ制御の基本:マウス入力とカメラ回転の連動、Input.GetAxisを使った回転処理
    • Unity実装:カメラの配置、カメラ制御スクリプトの作成、左右と上下の回転の分離

設計ポイント:回転制限(upDownRangeを60度程度に設定)、感度調整(mouseSensitivityを1.0f〜3.0fに設定)、マウスカーソルのロック

  • 最適化と応用:フレームレートに依存しない回転、カメラの揺れ(カメラシェイク)の実装
  • よくある失敗5選:マウスが動かない、上下の回転が逆、カメラが360度回転、回転速度が速すぎる/遅すぎる、カメラがプレイヤーと一緒に回転しない
  • 実用的なシステム:4ステップで完成(合計5時間)

今日から始める3ステップ

  1. STEP1:Main CameraをPlayerの子オブジェクトにする(所要10分)
  2. STEP2:カメラ制御スクリプトを作成する(所要30分)
  3. STEP3:マウス入力でカメラを回転させる(所要1時間)

あなたのペースで、少しずつ進めていけば大丈夫です。

 

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

ゲームを「遊ぶ側」から「作る側」へ

あなたのオリジナルゲーム、今年こそ完成させませんか?

RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。

Unity入門の森|永久会員チケット

永久会員チケット|Unity入門の森

全講座ラインナップを見てみる

実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。

コメント

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