テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】カメラが壁を貫通しないようにする

f:id:tsubaki_t1:20180406230733g:plain

今回はCinemachineの機能の一つで、カメラが壁を貫通しないようにする方法についてです。

 

なんとなく微妙なカメラリグ

Unity初心者が作ったゲームで、素人臭くなるカメラリグの一つに「カメラが壁を貫通する」というのがあります。
カメラを単純にプレイヤーの数メートル後方においただけのケースでよくあるもので、カメラが壁を貫通して世界の裏側を映すのが特徴です。

f:id:tsubaki_t1:20180406232329j:plain

ちなみに他の二つは「プレイヤーが常に画面の中央に居る」「カメラの向きがおかしい」です。まぁそういうゲームもあるのですが…

なんとなく、そうなってると素人っぽいなーというゲームが多いのが個人的な感想です。

 

カメラが壁を貫通しなくする

さて本題、カメラが壁を貫通しなくする方法についてです。

これは単純に、CinemachineのAdd ExtensionからCinemachine Colliderを追加するだけです。これでカメラはColliderの付いた壁を貫通しなくなります。

f:id:tsubaki_t1:20180406233057j:plain

f:id:tsubaki_t1:20180406233332g:plain

この問題はやはり壁際でしょう。
大抵の場合では問題なく動くコレですが、壁際に追い詰められると変な方向に飛んだり、今までと異なるカメラの動きで自身の立ち位置が混乱したりします。


強いて言うなら、広くて障害物の殆ど無いステージでは問題はないといえば無いのですが、それは楽しいゲームのステージかと言われると、少し悩ましいところです。

 

壁に遮られたら違う視点に切り替える

壁を貫通しないようにするもう一つのアイディアは、壁に遮られたら違う視点に切り替えるというものです。

 これは基本的に定点カメラか非常に動きの遅いカメラで動いており、キャラクターがカメラ外に移動してしまったときにカメラを切り替えて別アングルからキャラクターを映す…というものです。

ただコレはバイオハザード1~3やRPGのようなゲームは兎も角、アクションゲームに使用すると非常に混乱します。使い所が難しい機能です。

 

機能自体はCinemachineのClear Shotを使うと、使用できます。

f:id:tsubaki_t1:20180406235309j:plain

unity3d.com

関連

2Dで世界の裏側を見せない仕組み

tsubakit1.hateblo.jp何となく思い出す

tsubakit1.hateblo.jp