妹でもわかるUnrealEngine4

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

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

反転した親子スプライトの重ねあわせ順(修正版)

妹「昨日のブループリント写してたんだけどさ……」

「わからないノードとかありました?」

妹「いやそういうことではなく、あれ間違ってるんだけど……」

「ガーーーーン」

妹「向きを調べるところの<=の記号が逆になってるから、あれ絶対Aの方にしかならないみたいなんだよ」

「あれ? でも表示はちゃんとなるのを確認したんだけどな?」

妹「うん、表示は合ってる。向きに関係なくY軸をプラスにすれば手前に表示されるから、無駄な分岐があるだけで、結果としてあれで動いてる。」

「ということはそれSet Actor Locationが絶対座標で作用してるってことだなあ」

妹「だからまあ、あの分岐を外せばいいんじゃない?」

「あ、それはそれでちょっとまずい……」

妹「なんで?」

「今回の場合主人公のYが0だから、その子のYは1か-1にしかならないからそれでいいけど、例えばこれで主人公のYが0.5の場所だとしたら、そうはならない。右向きの時は1.5、左向きの時は0.5になるんだよ。0.5のとこを中心に回るんだから」

妹「そうするとどうなるんだ?」

「主人公より手前に来るはずが、同じところに並んでしまう。どっちもY軸0.5だから。数字がずれるから他のキャラとの重なり具合も変わる」

妹「それは駄目な気がするけど、主人公は0から変える気ないんだけど」

「演出の都合で変えたくなるかもしれないし、敵キャラや味方キャラに複雑な反転を付ける時に困るから」

妹「やっぱり駄目か」

「だから出来れば相対座標で処理したかったんだけど、それをやる方法がすぐには見つからなかったので、代替案としてこんな風にした」

f:id:una_unagi:20150629001551p:plain

「単純にえび天のY軸を使うんじゃなく、主人公(self)のY軸との差を調べるようにしてる。こうすると主人公のY軸が0ならそのままだし、変えてもそれに対応出来る」

妹「おー、これで完璧だな」

「いやそれが実は完璧ではなくて……コレ振り返るたびに数字が微妙にずれていくんだよ。0.0000いくらの話だから、すぐに影響が出るほどじゃないけど、1万回ぐらい振り返ると表示順が変わっちゃうかも」

妹「ナンデ!?」

「0.5とか半端な数字は使わず1以上の単位で変えるという自分ルールにして、計算中に整数を挟むようにすれば直る。それはY軸設定用の変数を実際の座標と別に作るか」

妹「整数しか使わないつもりだから別にいいけど、これでなんでズレるの? だってこれ結局ずっと同じ数字にしてるだけでしょ?」

「それは小数型の計算には誤差があるから、特に計算して同じ数字にするってのが凄く難しいんだよ。この話はまた次回」