自分はCinemachineの機能は結構好きで、色々と遊んでみたりしているのです。それでもなお首を撚る系の機能「Clear Shot」についてです。
Clear Shot
Clear ShotはCinemachineに含まれるカメラ挙動の一つで、主な用途は 「キャラクターがカメラ外に行くのを防ぐ」 というものです。他のFollow
やLookAt
系のようなカメラを追随するのではなくアクティブなVirtual Cameraそれ自体を切り替えるという点が特徴といえます。
主な切り替えるための判定は2つです
キャラクターが隠れた時に、見える位置にカメラを動かす
まずキャラクターが隠れた場合です。
例えば下の図では、通常時は青の位置にカメラがありますが、そのままだとオレンジの壁に遮られキャラクター(カプセル君)が見えなくなります。コレを回避するため、高めの位置にVirtual Camera
を配置しておき、それと切り替えることでキャラクターが完全に壁の裏に隠れるのを防ぎます。
これは通常のCinemachineCollider
と比較して、カメラの切替え先が明確に異なる設定を持つことが可能な点が良いです。
例えば通常は神視点カメラですが、洞窟に入っている間はサードパーソン的な視点とする…といった事も可能です。
手順
Cinemachine > ClearShot
を選択CM ClearShot1.CinemachineClearShot
のLookAt
に追跡する対象のGameObjectをセットCM vcam1
を切り替えたいカメラの数だけ増やす。
その際、常にメインとなるカメラのプライオリティは高めに設定しておく
重要なことは、親(CM ClearShot1
)もしくは子の全て(CM vcam1~
)のどちらかにCinemachineCollider
が設定されていることです。この設定を利用して遮蔽の判定を行っています。遮蔽の判定を行う必要がない場合は、CinemachineCollider
のAvoid Obstancles
のチェックを外します
なおCinemachineCollider
が障害物を検知してめり込みを回避するため、カメラの切替えがCut以外だとカメラが急激に動きます。コレを回避したい場合はCinemachineCollider
のDumpingWhenOccluded
を少し高めに設定しておきます。
キャラクターが近づいてきた時にカメラを切り替える
次にキャラクターが近づいた場合です。
キャラクターがカメラに対して一定以上近くに寄ってきた際に、優先度が切り替わる設定です。実際には遮蔽物で遮られていない、かつ一定範囲内のカメラという条件で取得する際に使う設定のように思います。 下の図でいうところの赤い枠に入るとカメラの切替えが始まります。
手順
Optional Target Distance
を設定します。遮蔽物で遮られる予定が無ければAvoid Obstacles
のチェックは外してもOKです。遮蔽物があり複数のカメラが切り替わる場合は、ONにしておきます。
使いすぎに注意なのか?
今回紹介したClear Shotですが、使い所はかなり限定されると踏んでいます。
例えば「遮蔽されたときにカメラが切り替わる」場合。今回はカメラの位置を少し上にしただけで、プレイに大した影響は出ないでしょうが、これがカメラの位置がイマジナリーラインを超えてガッツリ変わる場合、ゲームプレイが凄い混乱する気がします。 バイオハザード2やディノクライシスのように、操作性も含めてソレを許容するならば兎も角、こういったカメラ切り替えは最近は余り見ない印象です。いや、特定の位置に近づいたら…等はありそうですが、遮蔽されたら(範囲外に出たら)切り替えるタイプは少なくともパッと思いつきません。
また「近づいたらカメラが切り替わる」、コレはRPGやサードパーソン3Dアクション等でありそうですが、この「近づくと」というのは結構曲者で、カメラの中心点が実際のカメラの位置と異なる場所に調整出来ないと使い勝手が滅法悪いです。 これならばTrigger
のCollider
を用意し、OnTriggerEnter
等で反応したカメラの切替えとする方が理にかなっています。また、様々な条件でガチャガチャカメラが切り替わるのは、非常によろしくありません。条件は明確にしておきたい所です。
そして最後に、酔います。今回の記事を書いててカメラをガチャガチャ入れ替えてたんですが、きもちわるい・・・ううっぷ
カメラの操作は、出来るだけプレイヤーが予測できる動きに抑えたい所です。まぁカットシーンやフィルム的なアプローチに利用するのであれば、割とありな気もしますが、その場合はカメラの動きも含めて作っちゃいそうな予感も。
関連
Cinemachine Clear Shotの各項目の設定が日本語で記述されています。
公式チュートリアル動画です。