前書き
デフォルトのScreenを見てみるとBoxCollider2Dで指定された範囲をカメラが動かせるように設定されています。この状態だとBoxCollider2Dで指定した範囲全てを画面内に入れるため、プレイヤーが移動する先まで見えてしまっている状態です。
状況によっては「小部屋のようにしたい」、「先を見せたくない」といったカメラの領域を区切りたいことが出てくると思います。今回紹介するのはそのように「カメラの領域を分ける方法」について紹介していこうと思います。
領域ごとにカメラを区切るとどうなるのか?
以下の動画のように2つの領域を用意してカメラが2つの領域を行き来するように設定しました。この状態で領域の境界線をプレイヤーが移動すると、左、右とカメラが設定した領域ごとにプレイヤーを追従するように動いてくれます。領域ごとに区切ると以下のように設定することができます。
ヒエラルキー上で見ると以下のような設定になります。
右側(黄色)と左側(赤色)をカメラの領域に設定し、プレイヤーに追従してそれぞれの領域にいるカメラが移動してくれるようになります。。
いつも通りDemoの中にカメラの領域を区切る方法があるのでDemoを見ながら設定する方法を紹介していこうと思います。
領域ごとにカメラを区切る方法
Demoは以下の場所に格納されています。
TopDownEngine->Demos->Koala2D->KoalaCinemachineZones.unity
カメラを区切るためには以下の設定が必要になります
- BoxCollider2Dでカメラの領域を設定する
- TopDownCinemachineZone2Dを設定する
- VirtualCameraを設定する
- いままで使っていたCM vcam1を無効化する
BoxCollider2Dでカメラの領域を設定する
BoxCollider2Dを使ってカメラで映したい領域を設定します。
以下のキャプチャを見ると、黄色と赤色でカメラの領域が見えますが、この色についてはTopDownCinemachineZone2DのDebugGizmoColorで設定している色なので色を変更することも可能です。
TopDownCinemachineZone2Dを設定する
BoxCollider2Dを設定したオブジェクトにTopDownCinemachineZone2Dコンポーネントを設定します。普通に動かしたいだけであれば、設定内容についてはDemoにあるものと同じもので問題はありません。
またVirtualCameraについてはBoxCollider2Dに対応したVirtualCameraを設定する必要があるため、最初から作った時は空欄でも問題ありません。後ほど設定します。
VirtualCameraを設定する
BoxCollider2Dを設定したオブジェクトの子オブジェクトにVirtualCameraを設定します。
設定するコンポーネントについてはいろいろあると思いますが、とりあえず動かしたい場合はDemoにあるVirtualCameraオブジェクトを持ってくれば大丈夫です。
TopDownCinemachineZone2DのVirtualCameraが空欄になっていると思うので、BoxCollider2Dを設定したオブジェクトの子オブジェクトにあるVirtualCameraを設定してください。
いままで使っていたCM vcam1を無効化する
デフォルトであればKoalaCamerasのCM vcam1が有効になっていると思いますが、個別にVirtualCameraを新しく設定するため不要になります。CM vcam1を無効化しましょう。
以上の1~4をScreen上に実装していただければBoxCollider2Dで指定した領域内にカメラがとどまり、プレイヤーが移動するたびに次の領域へカメラが移動する作りになります。
まとめ
今回はカメラの領域を分ける方法について紹介しました。
1つの領域でカメラを動かしてもいいですが、小さな小部屋を作ったり、先に進むまで見せたくない要素がある場合などは今回のようにカメラの領域を分けてあげる必要があります。
TopDown Engineの場合はDemoがあるのでこのDemoScreenをコピーしてステージに組み込めば簡単に実装できるかなと思います。今回は紹介しませんでしたが、ほかにもカメラの切り替わる優先度を変えて同じ領域内でも優先度順にカメラを切り替えたり、プレイヤー以外の特定のオブジェクトにカメラが注目するようにしてみたりといろいろ設定することができるので試してみてください。
コメント