【Unity】カメラをマウスに連動させて回転させよう!|Camera入門③


前回の連載記事はCamera入門②「カメラの切り替えをスクリプトで実現しよう」でした。

連載の第三弾となる今回は、追従するカメラをマウスの動きに連動させて回転させる方法をご紹介します。

また、カメラをオブジェクトを中心に回転させる上で重要になるプログラムの記述についても詳しくご紹介します。

被写体Unityちゃん

※本記事の被写体には「Unity-Chan(ユニティちゃん)」を使用しています。

© Unity Technologies Japan/UCL

参考ページ)ユニティちゃん公式サイト

マウスの動きに連動してカメラを回転させる(三人称視点)

まずはマウスの動きに連動してカメラを回転させる方法をご紹介します。

フィールドに被写体となるオブジェクトを準備してください。

↓ユニティちゃんを準備

ユニティちゃんの位置

カメラと被写体の位置関係は任意ですが、ここではメインカメラを被写体オブジェクトの子オブジェクトとしています。

ここまでの設定方法がわからない方はCamera入門②をご参考ください。

次にカメラをコントロールするためのスクリプトを作成します。

このスクリプトを作成するために、空のゲームオブジェクト「CameraController」を作成します。

空オブジェクト作成

次にスクリプトを作成します。

ヒエラルキービューで作成したCameraControllerを選択し、インスペクタービューの最下部AddComponentでスクリプトを作成します。

今回、ユニティちゃんのアセットを使用している都合上、名前を「CameraControll」とします。(ユニティちゃんアセット内に「CameraController」というスクリプトが存在するため、同名を避ける目的)

スクリプト作成

作成したスクリプトを以下のように編集してください。

プログラムについては後ほど詳しく解説いたします。

では実際に動かして確認してみましょう。

カメラ回転

ユニティちゃんを中心にカメラが回転していることがわかると思います。

また、ユニティちゃんを移動させても問題なく追従しています。

ここまで実装できれば、キー入力による回転なども問題なく実装できると思います。

ここからプログラムについて今回注目してほしい部分を解説します。

Vector3

まずはじめにVector3について解説します。

Vector3はUnityにおいてとても重要なベクトル表現の一つです。

コンストラクタは以下のように定義されています。

Static変数も準備されています。Unityの記事でよく見かける表現もありますね。(公式マニュアルより)

back
Vector3(0, 0, -1) と同じ意味
down
Vector3(0, -1, 0) と同じ意味
forward
Vector3(0, 0, 1) と同じ意味
left
Vector3(-1, 0, 0) と同じ意味
negativeInfinity
Shorthand for writing Vector3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity).
one
Vector3(1, 1, 1) と同じ意味
positiveInfinity
Shorthand for writing Vector3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity).
right
Vector3(1, 0, 0) と同じ意味
up
Vector3(0, 1, 0) と同じ意味
zero
Vector3(0, 0, 0) と同じ意味

Input.GetAxis()

次にInput.GetAxis()について解説します。

GetAxis()はfloat型を返す関数です。引数に「Mouse X」「Mouse Y」と与えることでマウスのX・Y軸のそれぞれの動きに合わせた値を返します。

これによってマウスの動きに連動した値を取得することが可能になります。

transform.RotateAround()

最後にtransform.RotateAround()について解説します。

ある一点を中心にオブジェクトを回転させるための関数で以下のように定義されています。

引数の意味は「ワールド座標の point を中心とした軸( axis )で angle 度回転」です。(公式マニュアルより)

今回のプログラムではpointにユニティちゃんの座標、axisに回転軸となるX軸(transform.right)・Y軸(Vector3.up)、angleに回転する角度を与えています。

おまけ:Quaternionを用いた回転(一人称視点)

おまけとしてQuaternionを用いた回転方法をご紹介します。

作成するスクリプトでは矢印キーで左右上下に回転することができるカメラを作成します。

以下のスクリプト「CameraController」をメインカメラにアタッチして動きを確認してみてください。

それでは実際に確認してみましょう。

カメラ_Quaternion

一人称視点を実現することができました。

Quaternionに関する詳しい情報は以下をご参考ください。

まとめ

いかがでしたでしょうか。

Unityカメラの連載(Camera入門)第三弾として、カメラの回転方法についてご紹介してきました。

今回はマウスの動きに連動させた回転の実装でしたが、入力の受付方法を変えればキー入力など他の方法でも回転させることができると思います。

前回の連載記事よりもプログラムについての解説が増えてしまいましたが、マスターしてカメラを使いこなせるようになりましょう。

 

↓他の連載記事もぜひご参考ください。

Camera入門①)カメラの基本設定を理解しよう!

Camera入門②)カメラの切り替えをスクリプトで実現しよう!

Camera入門④)プレイヤーにカメラを追従させよう!(3D)

↓Unity関連記事はこちらをご参考ください

Unity関連記事)【入門】Unityを使ったアプリ開発ができるようになる!Unityの基本からARへの応用まで


被写体Unityちゃん

この記事はいかがでしたか?よければシェアをお願いします。

Furui