反転した親子スプライトの重ねあわせ順(不完全版)
妹「こういう風にえび天を取れるようにしたんだけど、そうすると左向いてる時に、えび天が後ろ側になっちゃうんだよ」
「これはどうやって持たせてるの?」
妹「スプライトソケットというのを見つけたから、それを使って別のアクターをくっつけてみている。使い方が正しいのかはしらないけど」
「Y軸はキャタクタより手前になるようにしてるんだよね?」
妹「してる。プラス側が手前だから、1cmぶん手前になってるはず。でも反転するというか、回転させてるから、裏から見る感じになってるのかなあ……と」
「なるほど。確認のために左向きの状態で一時停止して、Y軸をマイナスにしてみる」
妹「あ、ちゃんとなってる」
「そして右を向くとまた裏側に…と。やっぱり反転した時に裏になっちゃうね。3Dで考えたらそれが普通かもしれない」
妹「3Dじゃなくて2Dで考えてくれー」
「とりあえず反転する時にY座標の値を逆にするしかないね。こんな感じでとりあえず反転出来る」
妹「あとでこれみながらやってみる」
「これには欠点があるというか、足りてない部分がある。元々左右に歩き出す時に絵の向きどうするか決めてて、そこにえび天の処理も入れたから、左向きでえび天を取ると、その後歩くまで裏側に回り込んだままになる」
妹「歩くときだけじゃなくて、えび天取った時にもY軸設定した方がいい?」
「そうなんだけど、同じようなブループリントを色んなとこに書くのはトラブルの元。後でやり方変わった時に、元のままのが残ったりする。向き設定用の関数を別に作ってそれを呼び出すのがいいと思う。使いたい場所が複数ある時は関数かマクロにしていくのが基本」
妹「ふむふむ」
「えび天を取った時のことも考えると、"どっち向きかを保存するBoolean変数"を作って、歩く時とプレイヤー登場時にそれを設定して、それを元に絵の向きだけ合わせる関数があると良いと思う」
妹「でもこれ、敵キャラとかそれぞれに関数作るの大変そうだなあ」
「複数アクターが親子でつながってるような、難しそうなやつは反転させない」
妹「そ、それしかないのか」
「適当な2Dスプライトのアクターを引数にとって、絵を反転させて、子アクターがあればそれのY軸のプラスとマイナスを逆にする…という関数を作ることも出来そうな気はする」
妹「でもそれぞれスプライトの変数とか違うんだから、ブループリントに書けなくない?」
「変数をGETするというやり方じゃなく、Get Children Componentsを使えばいいと思う。配列の中身が0個なら何もしなくていいし、あればあっただけ全部やる感じで」
妹「配列……配列は、敵だ」
「えーーーー」
妹「そんなややこしい敵は作らないようにする」