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

妹でもわかるUnrealEngine4

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

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

コンストラクションで自動的に地面を広げる実験+縦方向

2Dゲーム ブループリント Paper2D UE4.10

妹「縦方向の増築も出来るようになった。なんとなく仕組みがスマートじゃない気はするけど、思ってたような動き方になった」

f:id:una_unagi:20160322210950g:plain

f:id:una_unagi:20160322211426p:plain
f:id:una_unagi:20160322213242p:plain
f:id:una_unagi:20160322211441p:plain

妹「とりあえず最初に縦横の範囲を調べて、スプライト何枚分か計算して、その回数分だけループさせてスプライトを追加している。最初の列は一番上だから草生えた絵で、それいがいは土だけの絵を追加してる。あと最初の1個は最初からアクターにくっついてるけど、そもそも最初の1個をくっつけておく必要がなかった気もする。全部SceneComponentに追加していくので良かった」

「ループは縦ループと横ループに分けないの?」

妹「タテループ? ヨコループ?」

「この図だとForLoopが一個でしょ。1個ずつ左に進んで、で横幅いっぱいになったら下の段に進む感じの。そこをForLoopを2つにする方法もあるんじゃないかと」

妹「うーん? これはこういう風になるものでは?」

「縦横合わせて1つのループにすると、あとでindexを分けることになるでしょ。indexが8で、横幅が7だったら、上から1つ目、左から2つ目みたいな。最初から縦に何回、横に何回というループを繰り返す方法がある。縦方向と横方向と両方の繰り返し処理を作る時によく使う。多重ループというんだけど……これは教えてなかったっけ?」

妹「教わってないと思う」

f:id:una_unagi:20160322220400p:plain

「多重ループを使って書くとこんな感じになる。他にもついでに色々簡略化したけど」

妹「他のことはともかくとして、ループにループにつなぐと……どうなっちゃうの?」

「今回の場合、先に縦のループ、次に横のループを繋いでる。横が3回(0~2)のループだとすると、全体としてはこういう風に推移する」

縦:0 横:0
縦:0 横:1
縦:0 横:2
縦:1 横:0
縦:1 横:1
縦:1 横:2
縦:2 横:0
縦:2 横:1
縦:2 横:2
縦:3 横:0

「……という風な増え方をする。つないだ先のが全部終わったら、最初のループが1つ進んで、また同じように繰り返す。横と縦が今何個目なのかはそれぞれのForLoopのIndexを見ればわかる」