読者です 読者をやめる 読者になる 読者になる

妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

多重スクロール実践編

「えー、今日はUE4で多重スクロールをやってみます」

妹「背景を遠くの方に置けばいいのかな?」

「今は遠近感ゼロの、2D仕様のカメラ使ってるから、それだと多重にならない」

妹「カメラの設定を変える……と見え方も変わるのか」

「そういう前提で調整するんだったらそれでもいいんだけどね。Ballpoint Universeは3Dのカメラ使ってる気がする。たしかペーパーマリオはそんな感じだったような」

妹「じゃあ今のカメラのままだと、背景をダイナミックに動かさないと駄目なのか」

「やることは単純で、”カメラが動いた分だけ背景も動かす”だけでいい。今回の場合カメラはキャラクターにくっついてるから、キャラクターが動いた分だけ動かす」

f:id:una_unagi:20160115213647p:plain

「最初はVelocityを使おうかと思ったけど、これだとワープの場合に効かないという問題があったので、イベントティックが起きるたびに、前回のLocationとの差を調べて、どれぐらい動いたをVector型で取得出来る設計にした。ティックの終了時にその時点のLocationを保存して、また次のティックで使う。最初の1回はBeginPlayの時に取得してる」

妹「この0.8というのは?」

「数字はテキトウだけど、普通は1m左に歩くと、他の物体は右に1m動いたように見える。その時に動いた量の0.8倍、80cm左に動くという設計になってる。ここを1.0にすると遠景は全く動かず、0にすると普通の背景と同じになる。マイナスにすると自分より速く動くから、手前にある物体を表現出来る」

f:id:una_unagi:20160115211900g:plain

「そうすると、こんな感じになる」

妹「たしかに背景がずれてる……けど思ったより遠近感がないような」

「そりゃあ配置とかデザインとかちゃんとやらないと。二重三重にして、それぞれのパーツを重ねると奥行き感がましてくる」

妹「でもこのブループリントだと1個しか動かせないのでは? っていうかこの遠景アクターってどこから持ってきてるの?」

「レベルに配置した背景だから、レベルブループリントからSETしてる。でもレベル作るたびに同じようなブループリント書くの面倒だから、背景用のアクターにタグを付けて、それを自動で追加する仕組みの方が便利かもしれない。数の問題は配列に変えればいいけど、1つのアクターにアタッチした方が1つ動かすだけで全部動くからいいかも」