【Unity】一人称視点で使えるカメラの動きをスクリプトを使って実装する

一人称視点で使えるカメラの動きをスクリプトを使って実装する

↑このような感じでカーソルの動きと同じようにカメラも動く

一人称視点で使えるカメラの動きをスクリプトを使って実装していく。少し階層構造が複雑なので、じっくり読んでいただきたい。

目次

一人称視点で使えるカメラの動きをスクリプトを使って実装する

現在の状況

一人称視点で使えるカメラの動きをスクリプトを使って実装する
  • X軸Z軸方向に動かせるPlayerが設置してある
  • Main CameraがPlayerの子オブジェクトになっている

「Player」は動かせるようにしている。「Character Controller」を使ってオブジェクトを動かす【Unity】で動かせる。この記事の続きとして読むと非常にわかりやすくなる。

あわせて読みたい
「Character Controller」を使ってオブジェクトを動かす【Unity】 Unityで使える「Character Controller」コンポーネントを使って、オブジェクトを動かしていく。 【「CharacterController」を利用してオブジェクトを動かす】 現在の状...

「Player」にスクリプトをアタッチ

一人称視点で使えるカメラの動きをスクリプトを使って実装する

【Player選択】→【LookXというスクリプトを追加】

「LookX」スクリプトに記述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LookX : MonoBehaviour
{
    [SerializeField]
    private float x_sensitivity = 3f;

    void Update()
    {
        float x_mouse = Input.GetAxis("Mouse X");

        Vector3 newRotation = transform.localEulerAngles;
        newRotation.y += x_mouse * x_sensitivity;
        transform.localEulerAngles = newRotation;
    }
}

x_sensitivityの値を変更すると、カメラの動くスピードが変更される。

このような階層構造にする

一人称視点のカメラが設定できるような階層構造にする

【Create Empty】→【LookYに名前を変更】→
【画像のような階層構造にする】

プレイヤーも空のオブジェクトもカメラの位置も同じ位置のほうが良い。カメラに関しては少しだけY軸方向に高いほうがプレイヤーの目線に合うこともあるので、そのあたりはあとで微調整していただきたい。

「LookY」にスクリプトをアタッチ

一人称視点のカメラが設定できるようにスクリプトをアタッチする

【LookY選択】→【LookYというスクリプトを追加】

「LookY」スクリプトを記述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LookY : MonoBehaviour
{
    [SerializeField]
    private float y_sensitivity = 3f;

    void Update()
    {
        float y_mouse = Input.GetAxis("Mouse Y");

        Vector3 newRotation = transform.localEulerAngles;
        newRotation.x -= y_mouse * y_sensitivity;
        transform.localEulerAngles = newRotation;
    }
}

y_sensitivityの値を変更すると、カメラの動くスピードが変更される。

実行してこんなふうになったらOK

一人称視点で使えるカメラの動きをスクリプトを使って実装する

【カーソルを動かした方向にカメラも動いたらOK

おわりに

もっと良いスクリプトがあると思う。思いついたら書くので許してほしい。

以上、一人称視点で使えるカメラの動きをスクリプトを使って実装する方法だ。

このようなチュートリアルを販売しているので、Unityでゲームを作成している人は購入していただきたい。

ゲーム開発のスキルを上げる>>

あわせて読みたい
【Unity3Dサンプルゲーム・チュートリアル】「フリスビーを犬に届けよ!」の概要 【はじめに】 Unityでのゲーム開発を手助けするメディア「Unishar-ユニシャー」のさぎのみやです。「フリスビーを犬に届けよ!」というゲームのチュートリアルを作成し...
【Unity】一人称視点で使えるカメラの動きをスクリプトを使って実装する

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!

コメント

コメント一覧 (1件)

  • 多分ですが、X,Yの座標計算は一つのスクリプトのみでできると思います。
    こうしたらどうでしょうか?
    ※[SerializeField]は外しています

    private float x_sensitivity = 3f;
    private float y_sensitivity = 3f;

    void Update()
    {
    float x_mouse = Input.GetAxis("Mouse X");
    float y_mouse = Input.GetAxis("Mouse Y");

    Vector3 newRotation = transform.localEulerAngles;
    newRotation.y += x_mouse * x_sensitivity;
    newRotation.x -= y_mouse * y_sensitivity;
    transform.localEulerAngles = newRotation;
    }

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次