チャムコード

チャーさんのUnityゲームラボです。Unityでゲーム制作する時に使うコードやノウハウをメインに発信しています。Unityでゲーム制作したいと思っているなら読んでください。

カメラ関連

Unityでカメラを回転させる方法(マウスの操作でカメラも回転します)

投稿日:2023年12月3日 更新日:

うも、チャーさんです。

あなたはUnityでカメラを回転させたいですか?この記事では、

カメラをマウスで回転させる方法を書いてますので、

 

この記事を読めば、あなたはUnityでゲーム再生中に

マウスを動かせばそれに連動してカメラを回転させる

ことができる様になります。ですが、この記事を読まなければ、

 

カメラを回転させるのは難しいでしょう。なぜなら

Unityの回転系はクォータニオンなどが絡み結構難しいです。

 

なのでUnityでカメラを回転させたいと思って

るなら、このまま記事をお読みください。

動画はこちら

 

Unityでカメラを回転させる方法(マウスで)

 

ということで結論ですが、

Unityでカメラを回転(マウスで)させる方法は、

 

Input.GetAxisでマウスの移動による増減をとり、

Quaternion.Eulerを使い角度を生成し、

transform.rotationに代入させカメラを回転させましょう。

 

これを読んだあなたは、

「何言ってんの?」と思ったかもしれません。

 

 

同意します。上記の結論説明だけでは

はっきり言ってわけがわからないと思うので

補足説明させてください。

 

なので説明のためにまずはコードを見てください。

おそらくその方が説明がわかりやすいです。

 

以下は変数宣言

float side;
float ver;

 

void Update()
{
// Debug.Log(Input.GetAxis(“Mouse X”));
float h = Input.GetAxis(“Mouse X”);
float v = Input.GetAxis(“Mouse Y”);
side += h;
ver += v;

transform.rotation = Quaternion.Euler(ver,side,0f);
}

 

というコードでして、これを書けばマウスでカメラを

回転させることができますが、仕組みとしては、

 

このInput.GetAxis(“Mouse X”)というやつで、

ゲーム再生画面中にマウスを左右に動かすと数値を取得する

ことができます。

 

 

例えば現在位置から左に動かすと0から-1までの少数の数値

を取得し、右に動かすと0から+1までの少数の数値を取得

します。

 

これはDebug.Logで一度出力してもらうとわかりやすい

かと思います。

 

で、それらの数値を宣言した変数である、sideに

side += h;

の様に加算していくと、マウスを左右に動かすたびに、

数値が加算され増減します。

 

 

(例えばマウスをずっと左に動かすと、

動かすたびに-1がプラスされ続け、マイナス方向にどんどん

数字が大きくなっていきます。

-10,-20,-30みたいな感じです。)

 

で、その増減した数値を、

transform.rotation = Quaternion.Euler(ver,side,0f);

の様に代入してやると、

 

transform.rotationというのは、スクリプトを

貼り付けたオブジェクトの角度のことですから、

 

さっきの例でいうと、角度がマイナス30度のとこに

回転してくれるわけです。

 

 

 

で、それをupdate関数の中で行なっているので、

マウスを動かすたびに角度にあたる部分の数値が常に

増減し、

 

それに合わせてカメラの角度が更新され続けるので、

カメラを回転させることができる様になります。

 

 

またQuaternion.Euler()というのは、

オイラー角を設定できるのですが、(オイラー角というのが

Unityのインスペクターとかで見る角度のやつです)

 

で、それをtransform.rotationに代入してるわけですね。

 

 

で、ここで回転に関して重要なのは、

float h = Input.GetAxis(“Mouse X”);

side += h;

transform.rotation = Quaternion.Euler(ver,side,0f);

 

でして、いわゆるマウスの横の動きにあたる

数値を、Euler()のy軸の部分に代入してるということです。

 

変数名が悪くて申し訳ないのですが、

オブジェクトを左右に回転させるには、

y軸の値を動かす必要があります。

 

 

なので、Input.GetAxisのマウスの左右の動きに

あたる部分の入力を、y軸に入れる。

 

で、逆にコードにもありますが、マウスの上下

にあたる部分

float v = Input.GetAxis(“Mouse Y”);

 

の数値入力を、x軸に代入してやることでカメラを上下に

回転させることができます。

 

 

この辺は、ちょっと直感的じゃなくてわかりづらい

と思うと思いますが、

これによってマウスを左右に動かした時に、

 

カメラも左右に回転し、

 

マウスを上下に動かした時にカメラも上下に回転し

上下を写す様になるので、コードの様にしてください。

 

 

マウス操作によるカメラの回転をもっと速くする方法

 

ということで、これでカメラはマウスに連動して回転

してくれるのですが、カメラの回転をもっと早くしたい、

そう思うこともあるかもしれません。

 

 

そこに関しては、

float speed =2f;

の様に変数宣言をして、

 

side += h*speed;
ver += v*speed;

 

の様にして、数値をかけてあげましょう。

そうすると単純にかけた数字の速さでマウスに反応する様に

なるので、回転がスムーズに(はやく)動く様になります。

 

マウスの動きに対する敏感さ、みたいな感じですね。

 

 

ゲーム再生中マウスを非表示にする方法

 

であとは、これはおまけみたいな内容ですが、

上記の内容をやれば、マウスに合わせてカメラは回転するのですが、

画面内にマウスが残ることになります。

 

なのであなたはマウスでカメラを回転させる際、

マウスのカーソルがちらついてちょっとうっとうしく感じる

可能性があります。

 

 

なのでマウスをゲーム再生中画面の時だけ

見えなくするのがおすすめです。

 

その方法とは、

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

}

と書いてやることです。

 

 

こう書くことで、ゲーム再生画面を押したら、

マウスが画面の真ん中に固定され、見えなくなります。

 

なのでカメラを回転させるためにどんなにマウスを

動かしても、気にならなくなるため、

本記事の内容を実践したついでにやると良いですよ。

 

ちなみに消えたマウスはEscキーを押せば、

表示される様になるので、再生画面を抜けたい場合は、

Escキーを押して、ゲーム画面を終了させましょう。

 

 

また一応コピペで動かせる様にスクリプト全文を載せておきます。

 

public class スクリプト名 : MonoBehaviour
{
 float side;
 float ver;
 float speed =2f;
// Start is called before the first frame update
void Start()
{
 Cursor.lockState = CursorLockMode.Locked;

}

// Update is called once per frame
void Update()
{
// Debug.Log(Input.GetAxis(“Mouse X”));
 float h = Input.GetAxis(“Mouse X”);
 float v = Input.GetAxis(“Mouse Y”);
 side += h*speed;
 ver += v*speed;

 transform.rotation = Quaternion.Euler(ver,side,0f);

 }
}

 

 

ということでまとめに入ります。

 

まとめ

 

Unityでカメラをマウスで回転させる方法は、

 

Input.GetAxisでマウスの移動による増減をとり、

Quaternion.Eulerを使い角度を生成し、

transform.rotationに代入させカメラを回転させましょう。

 

わかりやすくない結論で恐縮ですが、

上記をすればマウスでカメラを回転させることができます。

 

 

カメラの回転をマウスでできるのは、

非常に直感的な操作ができて良いので、

ぜひあなたも本記事の内容を実践してやってみてください。

 

 

ということで、この記事を読んでいただき

ありがとうございました。

 

それでわ。

 

チャーさん

-カメラ関連

関連記事

Unityでカメラの切り替え機能の作り方はこちら

どうも、チャーさんです。 あなたは、Unityでカメラを切り替えたいと思っていませんか?   この記事では、ゲームの再生中にキーボードの好きな キーを押したらカメラを切り替えることができる …

unityでカメラを追従させる簡単なコードと方法の説明をする記事

どうも、チャーさんです。 あなたはunityでカメラの追従をさせたい、 こう思ってませんか?   この記事ではオブジェクトをカメラで追従させる、 (カメラが追いかけてくれる)をできるようにす …

最新記事

チャーさん

Unityに関する記事を書いてます。

 

[簡単な経歴]

 

2018年-プログラムを始めUnityの存在を知りハマる。

2019年-エンジニアとして仕事開始(web系)

2021年-UnityでVR開発等にも手を出し始める。

現在-エンジニアとして活動しながらUnityも続行中。

 

youtubeでは、Unityに関する動画をあげてるので、

あなたのUnityスキルアップにどうぞ。