いい感じの追従カメラが1分で出来るCinemachine

2020年12月のunity1weekで『シナトの宝探し』というゲームを作成しました。
三人称視点の3Dゲームを作るのは初めてだったのですが、カメラにCinemachineを使ったら簡単だったよ、と言うお話です。

3Dゲームで追従カメラを作る方法

2020年12月現在、「Unity カメラ 追従」で検索すると多く出てくる方法は以下の2通りです。

・カメラを追従したいオブジェクトの子要素にする
・追従したいオブジェクトのtransformを毎フレーム追いかけるスクリプトを書く

しかし「子要素にする方法」は柔軟性に欠け、「スクリプトを書く方法」は単純にめんどくさいです。

それがCinemachineを導入することでスクリプトを書くことなく追従のスピードなどを調整できる高機能なカメラが使えるようになります。

そんなに便利ならなんで検索で出ないのか?と言うとCinemachine自体がUnityの2019.4(2020年6月リリース)で正式にVerifiedとなった新しい機能だからのようです。

次節からCinemachineで追従カメラをどう実装したかを解説します。

Cinemachineで追従カメラを作る
Step1: インストール

上述の通り、Cinemachineは正式にUnityのPackageとして配布されているので、2019.4以降のUnityであればText Mesh Proなどと同じようにPackage Managerからインストールできます。

画像2

画像2

Cinemachineで追従カメラを作る
Step2: Virtual Cameraの作成

Cinemachineのインストールが完了するとメニューバーに「Cinemachine」という項目が追加されるので、そこから「Create Virtual Camera」をクリックします。

画像3

するとHierarchy上に「CM vcam1」というオブジェクトが作成され、メインカメラに「Cinemachine Brain」コンポーネントが自動で付与されます。

Cinemachineで追従カメラを作る
Step3: Virtual Cameraの設定変更

あとは今追加された「CM vcam1」の「Follow」と「Look at」に追従したいオブジェクトを放り込むだけでおしまいです。

画像4

ちなみに『シナトの宝探し』もこのデフォルト設定のままで実装しており、ジャンプなどの素早い動作をしたときにはカメラがほんの少しだけ遅れて良い感じに追従してくれます。
遅れるタイミングは「X(Y, Z) Damping」の値で調整できます。
これは「子要素にして追従する」方法ではできない芸当です。

おわりに

以上、Cinemachineで追従カメラを作る方法でした。
「そんなこと知ってるよ」な人も多いかと思いますが、少なくとも1週間前の自分は知りませんでした。
おかげで今月頭に初めてスマホアプリとしてリリースした『風運びのシナト』ではそこそこ時間かけて書いたスクリプトで追従しています。
だって「Unity カメラ 追従」の検索結果が(略)

今回紹介したCinemachineの機能は全体のほんの一部にすぎません。(自分も触ったばかりなので)
もし興味を持たれたらより詳しい記事を書いている方もいらっしゃるので、是非他の機能も調べてみてください。
「決められたレール上を動きながら対象を注視する」とかできるそうですよ。

この記事が気に入ったらサポートをしてみませんか?