Actorにくっつけたカメラコンポーネントの取り扱い方法
「Twitterでカメラコンポーネントの話をしていたので調べてみた」
「カメラコンポーネントがくっついたActorを、SetViewTargetWithBlendノードの、NewViewTargetに設定するというのが基本みたい。というか標準のカメラ(CameraActor)も、結局ただカメラコンポーネントがくっついてるだけのActorだから、それと同じというか」
妹「でもコンポーネントだったらカメラたくさんくっつけたり出来ると思うけど、その場合にはどれが本物のカメラになるの?」
「例によって正確なルールは不明だけど、有効なカメラの中から1つだけが選ばれる。カメラが有効になってるどうかはIsActivateでわかる。デフォルトだとAutoActivateにチェックが入ってるから全部有効になってる状態でスタートする。Activateを設定した瞬間にカメラは切り替わるからSetViewTargetWithBlendはその都度やらなくていい。どのアクターのカメラを使うかを切り替える時に使う」
妹「でもそんなに複雑なカメラって要るかな? 主人公にくっつくタイプと、固定タイプと、2種類ぐらいじゃない?」
「主人公にくっつけるにしても、何種類か角度を変えられるようにして、FPS風とTPS風と切り替えるような事もできる。あと死んだ時や敵を倒した時、ゴールした時なんかに違うアングルで見せたりということもある。そのへんはプログラムじゃなくて演出の問題になってくるけど。それとBlendTimeとかを使って徐々に変化させたい時は、Activateで切り替えると一瞬で変わっちゃうから、別にアクターを作ってその中にカメラコンポーネントをくっつけて、SetViewTargetWithBlendで切り替えるといいらしい」
「ちなみにこれがキーを押すたびにカメラが切り替わるブループリント。最初にどちらか片方をActiveにしておいて、キーを押すたびにそれが逆になる」
妹「ToggleActive?」
「Toggle(トグル)っていうのは、同じスイッチをカチカチやるとオンとオフが切り替わる仕組みのことだよ。部屋の電気スイッチとか、パソコンの電源ボタンとか。それと同じノリで、今TrueだったらFalseに、今FalseだったらTrueに変えるようなノードにはToggleって名前が付いてる」
妹「そういうの欲しいこと時々あるけど、Toggleとかいう名前のは無かったような気がする」
「そういうの良く使いそうな所には公式でToggle命令が用意してあるんだけど、ない場合はこうやって自力で書くしかない。最低限SETとGETが出来れば同じことは出来る。FlipFlopノードを使ってもいいし、それぞれ逆だとわかってるからIsActiveは1度でいいし(NOTしたものがもう片方の値)、Toggle無しでももっと少し良い書き方は出来る。けどToggleがあるならそれ使うのが一番てっとり早い」