反転した親子スプライトの重ねあわせ順(修正版)
妹「昨日のブループリント写してたんだけどさ……」
「わからないノードとかありました?」
妹「いやそういうことではなく、あれ間違ってるんだけど……」
「ガーーーーン」
妹「向きを調べるところの<=の記号が逆になってるから、あれ絶対Aの方にしかならないみたいなんだよ」
「あれ? でも表示はちゃんとなるのを確認したんだけどな?」
妹「うん、表示は合ってる。向きに関係なくY軸をプラスにすれば手前に表示されるから、無駄な分岐があるだけで、結果としてあれで動いてる。」
「ということはそれSet Actor Locationが絶対座標で作用してるってことだなあ」
妹「だからまあ、あの分岐を外せばいいんじゃない?」
「あ、それはそれでちょっとまずい……」
妹「なんで?」
「今回の場合主人公のYが0だから、その子のYは1か-1にしかならないからそれでいいけど、例えばこれで主人公のYが0.5の場所だとしたら、そうはならない。右向きの時は1.5、左向きの時は0.5になるんだよ。0.5のとこを中心に回るんだから」
妹「そうするとどうなるんだ?」
「主人公より手前に来るはずが、同じところに並んでしまう。どっちもY軸0.5だから。数字がずれるから他のキャラとの重なり具合も変わる」
妹「それは駄目な気がするけど、主人公は0から変える気ないんだけど」
「演出の都合で変えたくなるかもしれないし、敵キャラや味方キャラに複雑な反転を付ける時に困るから」
妹「やっぱり駄目か」
「だから出来れば相対座標で処理したかったんだけど、それをやる方法がすぐには見つからなかったので、代替案としてこんな風にした」
「単純にえび天のY軸を使うんじゃなく、主人公(self)のY軸との差を調べるようにしてる。こうすると主人公のY軸が0ならそのままだし、変えてもそれに対応出来る」
妹「おー、これで完璧だな」
「いやそれが実は完璧ではなくて……コレ振り返るたびに数字が微妙にずれていくんだよ。0.0000いくらの話だから、すぐに影響が出るほどじゃないけど、1万回ぐらい振り返ると表示順が変わっちゃうかも」
妹「ナンデ!?」
「0.5とか半端な数字は使わず1以上の単位で変えるという自分ルールにして、計算中に整数を挟むようにすれば直る。それはY軸設定用の変数を実際の座標と別に作るか」
妹「整数しか使わないつもりだから別にいいけど、これでなんでズレるの? だってこれ結局ずっと同じ数字にしてるだけでしょ?」
「それは小数型の計算には誤差があるから、特に計算して同じ数字にするってのが凄く難しいんだよ。この話はまた次回」