Unity:マウスドラッグでカメラを回転して視点を操作するスクリプト

スポンサーリンク

今回はUnityでカメラ回転をマウスドラッグで操作する方法を試してみました。

一人称視点のカメラマウスドラッグで視点回転

まずは以前の記事で使用した室内のオブジェクトを用意してシーンを作成しました。

壁や床のテクスチャはUnityのアセットストアの無料テクスチャYughues Free Architectural Materials を使用しています。

スクリプトを作成

さて、マウスドラッグでカメラを操作できるようにするために、カメラにスクリプトをアタッチします。
[Hierarchy]ウィンドウ > MainCameraを選択。[Inspector]ウィンドウ > [Add Component]ボタン > New Script を選択して下記の通り入力。[Create and Add]ボタンをクリック。
Name: CameraRotater / Language: C Sharp

動作内容

スクリプトで実行する内容は次のようになります。

マウス左クリック時
カメラ角度とマウス座標を取得
マウス左ドラッグ中
マウスの水平移動量(クリック時の座標とマウス座標の現在値の差分値)をカメラのY軸回転に代入
マウスの垂直移動量(クリック時の座標とマウス座標の現在値の差分値)をカメラのX軸回転に代入

スクリプトの編集

スクリプトの内容は下記の通りになりました。

スクリプトコンポーネントの設定と動作確認

スクリプトコンポーネントは下図のようになります。
変数”Main Camera”フィールドにオブジェクト”Main Camera”をドラッグ&ドロップで割り当て。
変数”Rotation Speed”フィールドに数値を入力します。垂直方向の移動速度、Xの値はYよりも小さくしました。

トグルボタンでカメラ回転方向を反転させる

あらかじめスクリプトにはマウスドラッグ方向と視点回転方向を反転する処理として”DirectionChange()”関数を書いておきました。

この関数を実行するためのトグルボタンのUIオブジェクトを配置します。[Hierarchy]ウィンドウ > [Create] > UI > Toggle を選択。作成されたToggleボタンオブジェクトは下図のような階層になっています。

先にUI表示の拡大縮小設定を変更しておきましょう。[Hierarchy]ウィンドウ > Canvas >
を選択。[Inspector]ウィンドウ > Canvas Scaler (Script) パネルの設定を変更します。

次にToggleボタンを設定です。画面右下に配置してサイズを調整しました。[Scene]ビューで観ると下図の通りです。

WebGLビルド

今回作成したシーンをWebGLでビルドしてみました。画像クリックでファイルがダウンロード、再生されます。(ファイルサイズ:約15MB)

画面右下にあるチェックボックスでマウス移動とカメラの回転方向を反転できます。

参考Webサイト

今回の記事はこちらのブログ内容を参考にさせていただきました!
【Unity】カメラを回転させるメモ – vaguely

はじめに カメラを回転させる 対象物に向けて回転させる はじめに とあるきっかけで、マウス操作などに合わせてカメラをあれこれ回転させてみたくなったので、そのメモを残します。 カメラを回転させる まずは画面上をマウスの左クリックボタンでドラッグしたときに、カメラが回転するようにしてみます。 using UnityEngi...