見出し画像

2Dカメラメカニズム #1 メインカメラ

2Dのカメラづくりの第1回目はこちらの動画を参考にすすめていきます。
どのカメラをメインカメラとしてアクティブにするか?の仕組みです。

前半はキャラクタの仕組みづくりなので、カメラについては、17:40 Camera Setup からみてください。

複数カメラの仕組み

UEでカメラというとキャラクターに紐づいている印象があると思いますが、2Dカメラではキャラクターから独立させます。

キャラに紐づいているカメラ例

複数のカメラが必要なシーン、イベントシーンの挿入などの切り替え、部屋から部屋へ移動する際の演出をする際に複数カメラが必要になります。

メトロイドの部屋から部屋への移動など

それだけでなく、キャラクターのロジックとごちゃごちゃになるので、カメラはBPとして独立さるのがよいと思います。

複数カメラの中でメインになる仕組み

複数カメラがある前提なので、どのカメラが現在のメインカメラという認識するロジックが必要です。

キャラクターがBPカメラのなかにあるトリガー空間にオーバラップした場合に、BPカメラをメインカメラとする。という仕組みでメインとなるカメラを決定することになります。

BPカメラAの領域にキャラクターがいる場合は、Aカメラ。キャラクターが動きBPカメラBの領域にキャラクターが重なった場合にBカメラという仕組みです。

黄色で囲まれている枠にキャラクターがいると主のカメラとなる

このロジックで、複数のカメラを配置した場合、キャラクターの動きをトリガーとしてカメラをアクティブに変更することができる。

複数のカメラでどれがメインか変更するので、「現在のカメラ」の変数はキャラクターで持つことになります。

ややこしい点として、最初からキャラクターがこのトリガー空間にいると反応しないようなので、特別なロジックを記述しなければならないことです。具体的なノードをみていきましょう。

カメラのノード

下記の図のノードは、カメラに設定したBOXにキャラクターがオーバーラップをするとそれをトリガーとして、メインカメラを決定させてます。動画でも最初につくるノードなのですが、使われ方としてはこちらはサブなものになります。

プレイヤーをキャストしているのは、プレイヤーがもっているメインのカメラを格納する変数を使用するためです。

変数と聞くと、Booleanや、floatなどを思い浮かべちゃうのですが、カメラのようなオブジェクトを変数に設定することもできます。

あるカメラをメインのカメラにするには「Set View Target with Blend」というノードを使います。ですが、この仕組みは動きません。キャラクターがBOXの中にいるので、オーバーラップがトリガーされないのです。
※別のカメラ実装方法の参考記事

カメラのノードこれが最初に動くもの

動画をみているとややこしくなりますが、このノードが最初に動くものになります。

「Event begin play」をトリガーとして、まずキャラクターをキャストして、
「Get Overlapping Components 」このノードはオーバーラップしているコンポーネントを取得することができる。キャラクターにオーバーラップしているBOXはないか?あったらそのカメラをメインにする。という流れです。
「Get Overlapping Components 」を使用して取得した配列を「for Each Loop」をつかい、Player Trigger Boxがないか?各チェックを行い、条件に合致し場合、カメラとして使用する。

複数のカメラが同時に上記の処理をして、キャラクターがオーバーラップしているカメラがメインのカメラになりスタートする。
※最初のところに「Delay」を入れないと動作しない。

これが最初にカメラを決定するノードで、最初に紹介したノードは、複数カメラがある場合に、セカンドのカメラが反応するときの仕組みになります。

ちなみに、現在のカメラの変数がどのような役割をしているか?は謎です。
つづく

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