今回はCinemachineの機能の一つで、カメラが壁を貫通しないようにする方法についてです。
なんとなく微妙なカメラリグ
Unity初心者が作ったゲームで、素人臭くなるカメラリグの一つに「カメラが壁を貫通する」というのがあります。
カメラを単純にプレイヤーの数メートル後方においただけのケースでよくあるもので、カメラが壁を貫通して世界の裏側を映すのが特徴です。
ちなみに他の二つは「プレイヤーが常に画面の中央に居る」「カメラの向きがおかしい」です。まぁそういうゲームもあるのですが…
なんとなく、そうなってると素人っぽいなーというゲームが多いのが個人的な感想です。
カメラが壁を貫通しなくする
さて本題、カメラが壁を貫通しなくする方法についてです。
これは単純に、CinemachineのAdd ExtensionからCinemachine Colliderを追加するだけです。これでカメラはColliderの付いた壁を貫通しなくなります。
この問題はやはり壁際でしょう。
大抵の場合では問題なく動くコレですが、壁際に追い詰められると変な方向に飛んだり、今までと異なるカメラの動きで自身の立ち位置が混乱したりします。
強いて言うなら、広くて障害物の殆ど無いステージでは問題はないといえば無いのですが、それは楽しいゲームのステージかと言われると、少し悩ましいところです。
壁に遮られたら違う視点に切り替える
壁を貫通しないようにするもう一つのアイディアは、壁に遮られたら違う視点に切り替えるというものです。
#cinemachine で、被写体がカメラ外に移動したときにカメラの自動切り替え pic.twitter.com/MVDMDSgyxK
— 椿 (@tsubaki_t1) 2018年4月6日
これは基本的に定点カメラか非常に動きの遅いカメラで動いており、キャラクターがカメラ外に移動してしまったときにカメラを切り替えて別アングルからキャラクターを映す…というものです。
ただコレはバイオハザード1~3やRPGのようなゲームは兎も角、アクションゲームに使用すると非常に混乱します。使い所が難しい機能です。
機能自体はCinemachineのClear Shotを使うと、使用できます。
関連
2Dで世界の裏側を見せない仕組み
tsubakit1.hateblo.jp何となく思い出す