多重スクロール実践編
「えー、今日はUE4で多重スクロールをやってみます」
妹「背景を遠くの方に置けばいいのかな?」
「今は遠近感ゼロの、2D仕様のカメラ使ってるから、それだと多重にならない」
妹「カメラの設定を変える……と見え方も変わるのか」
「そういう前提で調整するんだったらそれでもいいんだけどね。Ballpoint Universeは3Dのカメラ使ってる気がする。たしかペーパーマリオはそんな感じだったような」
妹「じゃあ今のカメラのままだと、背景をダイナミックに動かさないと駄目なのか」
「やることは単純で、”カメラが動いた分だけ背景も動かす”だけでいい。今回の場合カメラはキャラクターにくっついてるから、キャラクターが動いた分だけ動かす」
「最初はVelocityを使おうかと思ったけど、これだとワープの場合に効かないという問題があったので、イベントティックが起きるたびに、前回のLocationとの差を調べて、どれぐらい動いたをVector型で取得出来る設計にした。ティックの終了時にその時点のLocationを保存して、また次のティックで使う。最初の1回はBeginPlayの時に取得してる」
妹「この0.8というのは?」
「数字はテキトウだけど、普通は1m左に歩くと、他の物体は右に1m動いたように見える。その時に動いた量の0.8倍、80cm左に動くという設計になってる。ここを1.0にすると遠景は全く動かず、0にすると普通の背景と同じになる。マイナスにすると自分より速く動くから、手前にある物体を表現出来る」
「そうすると、こんな感じになる」
妹「たしかに背景がずれてる……けど思ったより遠近感がないような」
「そりゃあ配置とかデザインとかちゃんとやらないと。二重三重にして、それぞれのパーツを重ねると奥行き感がましてくる」
妹「でもこのブループリントだと1個しか動かせないのでは? っていうかこの遠景アクターってどこから持ってきてるの?」
「レベルに配置した背景だから、レベルブループリントからSETしてる。でもレベル作るたびに同じようなブループリント書くの面倒だから、背景用のアクターにタグを付けて、それを自動で追加する仕組みの方が便利かもしれない。数の問題は配列に変えればいいけど、1つのアクターにアタッチした方が1つ動かすだけで全部動くからいいかも」