テラシュールブログ

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

【Unity】MainCameraが移動できなくなったときの対処法

今回はMainCamera(もしくは任意のオブジェクト)が動かせなくなったケースの対処方についてです。以前見かけた現象ですが、今回その再現方法を思い出したのでメモしておきます。

 

 

カメラが動かせない!

さて、突然カメラが動かなくなりました。カメラのTransformを引っ張っても、Inpsectorでパラメータを変えてもうんともすんとも言いません。

Transformだけではありません。FOVもPhysical Camera設定も、Near Far設定も全て操作不能です。ナンテコッタイ!!!

f:id:tsubaki_t1:20180908220823g:plain

強いて言えばCameraのenable/disableやClaer Flag、CullingModeやAllow HDR等のAllow系は操作することができます。

 

zzz... 犯人はCinemachine、貴方です

問題を解決するために推理します。

この手の操作ができない系は、大抵の場合どこからか操作されています。そして操作出来ない項目の一覧に見覚えがあります。
Virtual Cameraです。

f:id:tsubaki_t1:20180908221523j:plain

ということで動かせないカメラを再度確認してみると、Cinemachine Brain。これがカメラの動きを止めていたみたいです。
Cinemachine、お前だったのか。

Cinemachine BrainはCinemachineを使用すると勝手にMain Cameraにセットされるコンポーネントです。このコンポーネントが最もプライオリティの高いVirtual Cameraに合わせてCameraの座標やFOVを調整します。

これはVirtual Cameraが一つも登録されておらずアクティブなVirtual Cameraが無い場合でも座標を上書きするらしく、コレがセットされていたせいでCameraが動かせませんでした。
本来はVirtual Cameraを追跡するので何となく分かるのですが(Virtual CameraはSceneViewに表示される)今回はVirtual Cameraが無かったのでパっと見わかりませんでした。

f:id:tsubaki_t1:20180908221710j:plain

 

どのように起こすのか?

今回の悲劇はどのように起こすことができるのか考えてみます。

まずは自分が起こしたケース。

  1. Virtual Cameraを作成
  2. やっぱ止めるとVirtual Cameraを削除

Virtual Cameraを作成した地点でCinemachine BrainをMain Cameraに追加するので、Virtual Camera生成直後に破棄すると動かないMain Cameraが残されます。

 

もしくは、こんなケースも見かけました。

  1. Timelineを導入
  2. Cinemachine Trackをトラックに追加
  3. 適当なオブジェクトをCineamchine Brainへドラッグ&ドロップし、
    Create Cinemachine on ○○を選択

これで動かせないオブジェクトの完成です。今回の場合SphereオブジェクトをTrackに登録したところ、一切動かせなくなりました。正確にはVirtual Cameraを追うようになり、自身で動かせなくなりました。

f:id:tsubaki_t1:20180908222606j:plain

で、解決方法は?

Cinemachine Brainをカメラから外すだけです。
Cinemachine BrainがセットされているGameObjectはHierarchyに表示されるので、探し出してCinemachine Brainを消せばOKです。

f:id:tsubaki_t1:20180908222954j:plain

もしくはVirtual Cameraをセットすれば、Virtual Camera経由でCinemachine BrainがセットされているGameObjectを操作出来ます。