妹でもわかるUnrealEngine4

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

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

妹、180度にしてるはずのに-179.9999度になってる

妹「小数はずれるけど、でも整数を代入した時はずれないんだよね?」

「そのはずだけど」

妹「でも左右反転しようと思って180度に設定すると、こんな事になるんだけど……」

f:id:una_unagi:20150717210220g:plain

妹「ずれてるというか、マイナスになってるというか」

「なんでだろう?」

妹「なんかマイナス-180度ってすると、プラスの179.999になっちゃうし、180というのが特殊なのかなあとか思ったんだけど」

「あーそういう事か。そうだね、小数じゃなくてそっちのずれだね。角度が-179.999…から179.999…の間に収まる様に、自動調節されてる。アンサーハブに英語の情報があった」

Rotation negative after 180 degrees - UE4 AnswerHub

妹「180度だとなんかまずいの?」

「-179.999…から180の間になるように計算すればいいと思うんだけど、なんでだろうね? とりあえずはそういう仕様と思うしか」

妹「でもそうすると向きによって分岐させたいときに、マイナスかプラスかわからないと困る」

「0の時はずれないから、0以外だったら逆向いてると判断したらいいのでは。もしくはABS使うとか」

妹「それはそうなんだろうけど、なんか釈然としないというか、これ3Dゲームだったら困るんじゃない? 同じような角度なのに数字が全く逆ってなったら」

「そりゃそうなんだけど、全部プラスの数にしたとしても0度と359.9999度とか、どこかに継ぎ目みたいなのが出来るからね。必要な場合は170度から190度の範囲内だったらtrueを返すみたいな関数を作ったらいいんじゃないかな。範囲が180か-180を超えてる時はそれに合わせて書き換えて。そうすれば毎回やらなくても良くなる」

妹「うーん、でもやっぱりズレが気になる。逆に最初から179.999999って入れたら……やっぱ駄目か」