Unity Cinemachine  POVカメラで右マウスボタン押下時のみカメラを回転させる

Unityでのカメラワークを実装するのにあたって、Cinemachineを導入しました。
が、Cinemachineについては参考にできるサイトも少なくなかなか苦労しました。

今回は、CinemachineでPOV利用時に、右マウスボタン押下時のみカメラを回転させる方法について記載します。

※この記事はUnity2019以降を前提に記載しています。

Cinemachineとは

Cinemachineとは何か、については以下のサイトをご覧ください。チュートリアルもあり、大概のことはここで学ぶことができます。
CinemachineはPackage Managerからインストールが可能です。

Cinemachine | Unity

とりあえず基本的な設定と考え方

・物理カメラに、Add Componentから「CinemachineBrain」を追加。
・Unity2019の場合、GameObject→Cinemachine→Virtual Cameraでバーチャルカメラを作成。
・Unity2020の場合、Cinemachine→Create Virtual Cameraでバーチャルカメラを作成。
 ※ 最も基本的なのがVirtual Cameraですが、「Free Look Camera」「Clear Shot Camera」など色々な種類のバーチャルカメラを作成可能。
・バーチャルカメラの「Follow」に、カメラのボディがターゲットにするObjectを設定。
・バーチャルカメラの「Look At」に、カメラのレンズがターゲットにするObjectを設定。
・バーチャルカメラの「Body」で、カメラのボディがターゲットをどのように追従するかを設定。
・バーチャルカメラの「Aim」で、カメラのレンズがターゲットをどのように追従するかを設定。

→ これらを設定すると、CinemachineBrainの設定された物理カメラは、優先度の高いバーチャルカメラの設定に応じて動作するようになり、
  物理カメラ側の位置や回転、FOVなどを変更しても基本的に無効となります。

Unityのシーンビューのように、POVで右ボタン押下時だけカメラを回転させたい

Unityのエディタのように、右クリック時だけカメラを回転させたいと思ったのですが、意外とこれが難しい。
・Virtualカメラを作成 → Followはプレーヤー、Look atは「なし」、Bodyは「Hard lock to target」、Aimを「POV」に設定。
・Value Rangeは回転する範囲です。
・Invertにチェックを入れると、マウスと逆の向きに回転します。

その他、各設定値の参考情報: POV | Cinemachine | 2.6.0 (unity3d.com)

さて、これだけだと、常にマウスの動きに合わせてカメラが回転してしまいます。
右ボタン押下時だけカメラを回転させるには、結論からいうと、Scriptの実装が必要でした。
以下のUnity ForumにScriptがありました。世界には素晴らしい先輩方がいるものです・・・私も使わせていただきました。
How do I make a CinemachineFreeLook orbiting camera that only orbits when the mouse key is down? – Unity Forum

このScriptを対象のVirtualCameraに「コンポーネントを追加」でアタッチすれば、右ボタン押下時にのみカメラが回転します。
なお、このScriptはCinemachineFreeLookCameraだけでなく、VirtualCameraのPOVでも動作します。

今回は以上です。

 

 

 

“Unity Cinemachine  POVカメラで右マウスボタン押下時のみカメラを回転させる” への1件の返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です