今回は、2DのRPG制作においてカメラに映したくない画面外をUnityの公式パッケージである「Cinemachine」を使って映さないようにします。
以前、木のタイルチップを画面外に並べることでカバーしていましたが、こちらの方法もあるよということで今回紹介していきますね。
今回紹介する方法も、一切プログラミングを行う事なく実装することが出来ます。
【2DRPG】画面外をカメラに映さないようにする【Unity】
Cinemachineをインポートする
「Window」→「Package Manager」から検索窓で「chinemachine」を検索して右上の「Install」ボタンをクリックします。しばらくすると、パッケージがインポートされるはずです。
バーチャルカメラの設定
インポートが完了すると、メニューバーにChinamechineという項目が増えていると思いますので、クリックして「Create 2D Camera」を選択します。
すると、ヒエラルキーにバーチャルカメラが作成され、MainCameraには「Cinemachine Brain」コンポーネントがアタッチされます。
「CM vcam1」を選択して、CinemachineVirtualCameraのFollowにカメラが追いかけたいオブジェクトを設定します。今回の場合プレイヤーになりますね。
カメラに映したい範囲の設定を行う
カメラの移動範囲は、Box Collider2Dを使って指定するようにします。
まずは、空のオブジェクトを作成してBox Collider2Dをアタッチします。空のオブジェクトの名前は「Field」にしました。
こんな感じですね。私のマップはいびつなので、試験的に上だけをマップ端に合うように調整しています。
続いて、Fieldに「Composite Collider 2D」コンポーネントをアタッチします。このコライダの合成を行う際などに便利なので覚えておくと良いです。
設定は画像のように変更します。移動範囲内に別のコライダが存在すると、プレイヤーが画面外に強制的に飛ばされる事があるので、Is Triggerにはチェックを入れておきます。
Cinemachine Confinerの設定
「CM vcam1」を選択してAdd Extensionから「CinemachineConfiner」をクリックします。
Bounding Shape 2Dには「Field(Composite Collider 2D」をアタッチするようにします。
設定が完了したらゲームを実行してみます。
上に進むとご覧の通りプレイヤーのみが移動するだけで、カメラは追いかけてきません。
カメラワークの設定を細かく変更したい場合には、バーチャルカメラにある「Body」から色々と調整出来るので試してみてください。