今回もタイトルの通りで「Cinemachineを使った2Dゲーム用の追従カメラの作り方」をご紹介する記事です。
実は私はこれまでCinemachineを一度も触ったことがなかったのですが…今作っている2Dゲームのカメラワークを自作するのが面倒くさかったので「そういえばCinemachineってのがあったな…」程度の軽い気持ちで使ってみることにしました。
しかし使ってみたらすごく便利だったのでかなりの衝撃を受けました。少し大げさかもしれませんが「どうして今までこんな便利なものを放置していたのか」と思ったくらいです。
そこで今回は私自身の備忘録も兼ねて、まだCinemachineを使ったことがない方向けにその便利さや基本的な使い方をご紹介していきますね。
Cinemachineとは?
まず初めに「Cinemachine」(シネマシーン)についてごく簡単に説明します。
CinemachineはUnityのパッケージ(=公式の拡張機能)の一種で、カッコいいカメラワークをスクリプトを書かずに実現できる便利機能です(※Unity2018以上のバージョンで使えます)。
カメラワークって自前で実装しようとすると地味にすごく大変なのですが、これを使えば簡単にクオリティの高いカメラワークを作ることができます。
2Dゲーム用の追従カメラの作り方
では早速ですが2Dゲーム用の追従カメラの作り方を通してCinemachineのごく基本的な使い方を説明していきます。実行結果の例は次のGIFのとおりです。
キャラクターの移動から若干遅れてカメラが滑らかに追従している様子が分かると思います。こういうカメラワークであれば10分以内に作れてしまうので、ぜひ次の手順をお試しください。
手順1:Cinemachineのインポート
まずはCinemachineをPackage Managerからインポートします。ツールバーの「ウィンドウ」→「Package Manager」からパッケージマネージャウィンドウを開いて、左のパッケージ一覧から「Cinemachine」を選択して「Install」ボタンをクリックしてください。
手順2:2D用の仮想カメラの作成
次に2Dゲーム用の仮想カメラを作ります。仮想カメラとはCinemachineにおけるカメラ制御の肝となるゲームオブジェクトで、一旦この仮想カメラでカメラワークを計算して、その結果をメインカメラなどに反映させるという仕組みになっているようです。
Cinemachineをインポートするとメニューバーに「Cinemachine」という項目が出るので、それをクリックして「Create 2D Camera」を選択しましょう。
これで「CM vcam1」という名前の仮想カメラがシーンに作成されるほか、メインカメラに「CinemachineBrain」というコンポーネントが自動的にアタッチされます。
手順3:仮想カメラの設定
そうしたら今作った仮想カメラの設定を行います。今回は下の画像のように設定しました。
主な設定項目は次の通りです。
- Follow:追尾のターゲットとなるゲームオブジェクト
- Body:「Framing Transposer」を選択
- Lookahead TIme:
カメラの移動先の予測時間。例えば、アクションゲームでカメラをプレイヤーより先の位置に移動させて前方の視界を確保したいときに便利。ただしランダムに動くターゲット等の場合には上手く動作しない。 - Lookahead Smoothing:予測時の補完を制御するための値。
- Lookahead Ignore Y:
Y方向の移動先の予測を行わないようにする。例えば、アクションゲームでプレイヤーがジャンプしたとき、Y方向に予測が働くと画面が大きくブレて酔ってしまうのでそれを防ぐときに使える。
特にこだわりがなければ「Follow」だけ設定して、あとはデフォルトの設定のままでもOKだと思います。
おわりに
以上、ごく簡単ではありますがCinemachineを使ったカメラワークの基本部分についてご紹介しました。
Cinemachineがあればスクリプトを1行も書かずに良い感じのカメラワークを実現できるのでとても便利ですね。他にもCinemachineにはまだまだ魅力的な機能があるので、ぜひググって調べてみて頂ければと思います。