コンストラクションで自動的に地面を広げる実験+縦方向
妹「縦方向の増築も出来るようになった。なんとなく仕組みがスマートじゃない気はするけど、思ってたような動き方になった」
妹「とりあえず最初に縦横の範囲を調べて、スプライト何枚分か計算して、その回数分だけループさせてスプライトを追加している。最初の列は一番上だから草生えた絵で、それいがいは土だけの絵を追加してる。あと最初の1個は最初からアクターにくっついてるけど、そもそも最初の1個をくっつけておく必要がなかった気もする。全部SceneComponentに追加していくので良かった」
「ループは縦ループと横ループに分けないの?」
妹「タテループ? ヨコループ?」
「この図だとForLoopが一個でしょ。1個ずつ左に進んで、で横幅いっぱいになったら下の段に進む感じの。そこをForLoopを2つにする方法もあるんじゃないかと」
妹「うーん? これはこういう風になるものでは?」
「縦横合わせて1つのループにすると、あとでindexを分けることになるでしょ。indexが8で、横幅が7だったら、上から1つ目、左から2つ目みたいな。最初から縦に何回、横に何回というループを繰り返す方法がある。縦方向と横方向と両方の繰り返し処理を作る時によく使う。多重ループというんだけど……これは教えてなかったっけ?」
妹「教わってないと思う」
「多重ループを使って書くとこんな感じになる。他にもついでに色々簡略化したけど」
妹「他のことはともかくとして、ループにループにつなぐと……どうなっちゃうの?」
「今回の場合、先に縦のループ、次に横のループを繋いでる。横が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を見ればわかる」