原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【Unity】CinemachineのClear Shotを利用して障害物に隠れたオブジェトを写す

梅雨明け?

駐車場に停めている車が汚れているので洗車しようかと思ったけど「梅雨時期だからどうせ雨が降るし」と理由付けてそのままにしていたら一向に雨が降らず、しょうがないからと洗車をしたらその日の午後に夕立が降って洗車代が無駄になった皆さんこんにちは。今年は梅雨らしい天候にあまり遭遇しないまま猛暑の季節を迎えそうですが水不足等は大丈夫なんでしょうかね?電力供給もひっ迫しているらしいし。

 

見下ろし型

TPS、FPS視点のゲームと違いクォータービュー見下ろし型ゲームの場合、どうしても操作するキャラクターが建物等の障害物の裏に隠れるといった事象からは逃げることはできません。

こんな感じで障害物の裏に隠れてしまう。

そういった場合、隠れている部分のシルエットを表示するという手法を取ることもできますが、それ用のシェーダーが障害物とキャラクターそれぞれで必要となりちょっと面倒です。

www.karvan1230.com

なのでもっと単純に考えて、キャラクターが障害物の裏に隠れた時は裏側に別に用意したカメラでキャラクターを撮影して、隠れていない場合は元のカメラで撮影する、といった事ができれば、キャラクターが移動して障害物に隠れて見えなくなる、といった問題の解決になりそうです。

 

Clear Shot

CinemachineにはClear Shotという機能が用意されています。この機能を使うと対象が障害物に隠れた時、別のカメラに切り替えるカメラワークを実装できます。
Clear Shotを使うにはまず上部メニューからGameObject > Cinemachine > ClearShot Cameraを選択します。

 

するとシーン内にClearShotのオブジェトとその子オブジェトとしてVirtual Cameraが作られます。

 

ClearShotは自身の子オブジェトとなっているVirtual Cameraの切り替えを行います
その為、切り替えるカメラの数だけVirtual Cameraを複製し、それぞれ位置やターゲットを設定しておきます。

ClearShot作成前に作ったVirtual Cameraも切替対象にしたい場合は、Virtual Cameraコンポーネント最下部にあるExtensionsからCinemachine Colliderを選択してアタッチした後、ClearShotの子オブジェトとしてください

 

遷移順の設定

上記の設定後、ClearShotオブジェトをInspectorで確認すると自身の子オブジェトとなっているVirtual Cameraがリスト形式で表示されています。このリスト内でPriorityの値→リスト順の順番で切替順番が決定されます。

カメラの切り替え時のアニメーションについてはCinemachine Clear ShotのDefault Blendから指定します。
今回はアニメ無しに切り替える為「Cut」を選択しました。

 

最後に、撮影対象のキャラクターが障害物の裏に隠れたかどうかの判定はColliderを使って行われるため、障害物の方にColliderがアタッチされていることを確認してください。

ここまで確認できたら実行します。

カメラの対象が障害物に隠れたら別のカメラに切り替わるようになりました。

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。