ゲームプログラミング独学ブログ

ゲームプログラミングを初心者・未経験から独学で身に着けるための情報をまとめていきます。Unityを使った2D・3Dゲームの開発方法やゲームクリエイターになるための情報もまとめていきます。

Unityで一人称視点を実現する方法:マウスを使った視点移動スクリプトでFPS体験を作る

【必見】ゲームプログラミング初心者向けのUnityを使ったゲームプログラミング講座サイト「Unity入門の森」の講座ショップ。RPG、アクションゲーム、ノベルゲーム、タワーディフェンス、FPS、レースゲーム、ローグライクゲームと盛りだくさんの講座サイトです。ここで独学でゲーム開発できるようになりました。

 

Unityにおける一人称視点の基本

Unityで一人称視点を実現することで、FPSFirst-Person Shooter)ゲームやVR体験のように、プレイヤーがリアルな視点で世界を探索することが可能になります。

一人称視点のメリットは、プレイヤーがキャラクターの目線で直接的な操作感や臨場感を得られることです。

特に、Unityは豊富なドキュメントやチュートリアルが揃っており、初心者でも一人称視点の設定を簡単に習得できます。

 

Unityでマウスを使った視点移動の設定方法

カメラ設定の概要

Unityで一人称視点を構築する際、まず重要になるのがカメラの配置です。

カメラをキャラクターに「アタッチ」することで、キャラクターの移動とともに視界が連動します。

この設定によって、プレイヤーはキャラクターの視点で世界を見渡すことができます。

 

マウスによる視点移動の仕組み

マウスで視点を動かすには、視点移動を処理するスクリプトが必要です。

以下のコード例は、プレイヤーがマウスを動かした際に視点が追従するシンプルなスクリプトです。

上下左右の視点移動が可能になり、FPSVRで使用される基本的な視点操作を再現できます。

 


using UnityEngine;

public class MouseLook : MonoBehaviour
{
    public float mouseSensitivity = 100f;
    public Transform playerBody;
    float xRotation = 0f;

    void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;
    }

    void Update()
    {
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;

        xRotation -= mouseY;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);

        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
        playerBody.Rotate(Vector3.up * mouseX);
    }
}

このスクリプトでは、マウスのX軸とY軸の動きに基づいてカメラの視点が変わるよう設定しています。

さらに、Cursor.lockState = CursorLockMode.Locked;でカーソルが画面の中央に固定されるため、プレイヤーはゲーム画面外にカーソルを移動させることなく視点を操作できます。

 

マウスによる視点移動が機能しない場合の対処法

視点移動が正しく機能しない場合、以下のような点を確認しましょう。

 

  • 感度設定:マウスの感度が低すぎると視点があまり動かなくなります。

    スクリプト内のmouseSensitivityの値を調整してみてください。

     

  • カメラの配置:キャラクターの視点がずれている場合、カメラの位置や角度が適切であるか確認しましょう。

     

  • コードのミス:エディターのコンソールにエラーメッセージが表示されている場合は、エラー内容を確認し修正することで動作を改善できます。

     

一人称視点に特化したスクリプトの応用例

歩行や移動の実装

視点移動に加え、キャラクターが歩く動作も取り入れると、よりリアルな体験を作れます。

Unityでは視点移動と連動する形でプレイヤーの移動も設定可能です。

以下のコード例は、視点移動に合わせたキャラクターの歩行を実現するものです。

 


public class PlayerMovement : MonoBehaviour
{
    public CharacterController controller;
    public float speed = 12f;

    void Update()
    {
        float x = Input.GetAxis("Horizontal");
        float z = Input.GetAxis("Vertical");

        Vector3 move = transform.right * x + transform.forward * z;
        controller.Move(move * speed * Time.deltaTime);
    }
}

このスクリプトにより、WASDキーでキャラクターが前後左右に移動し、視点移動と連動して方向転換も可能になります。

 

FPSカメラの改善ポイント

一人称視点の操作感を高めるため、視点移動が滑らかに行えるようにカメラの感度調整を行うと効果的です。

これにより、プレイヤーが意図した通りにスムーズな視点移動を体験できます。

 

三人称視点の視点移動との比較

Unityでは一人称と三人称を自由に切り替えることが可能です。

三人称視点では、カメラがキャラクターを背後から捉え、広範囲の視界を提供します。

一人称視点と比べ、カメラの配置や視点の動きが異なるため、両視点を使い分けるゲーム設計も魅力的です。

Unityで視点切り替えを実現する際には、ボタンを押すことで一人称と三人称が変わるようなスクリプトを導入するとよいでしょう。

 

Unity入門の森でさらに深く学ぼう

一人称視点の実装や視点移動のスクリプトについてさらに深く学びたい方には、FPSゲームの作り方3 一人称カメラ操作の設定・ジャンプ処理の作成 - Unity入門の森がおすすめです。

初心者向けの内容から中級者向けまで、Unityを体系的に学べるコースが充実しており、実際に手を動かしながら学習できます。

一人称視点に関連するチュートリアルも豊富で、基礎から応用までを実践的に習得可能です。

ぜひ、Unity入門の森で次のステップに挑戦してみてください。