ロバメモ - 素人のUnity覚書と奮闘記

素人のUnity覚書と奮闘記

Transform.Rotate()が途中で変になる

やりたいこと

ゲームオブジェクトをクリックで時計回りに30度ごと回転させ、現在の回転角度を知りたい。

問題点

obj = 回転させたいオブジェクト
rot = Z角度を保持する変数

GameObject obj;
float rot;

obj.transform.Rotate (0, 0, -30);
rot = obj.transform.eulerAngles.z;

Debug.Log (rot);

こんな感じで書いて、実行してみると・・・

f:id:nico-taniku:20170929073355p:plain:h500

むむっ!途中で割り切れなくなったのか、0に至っては暗号みたいになっちゃってるやん。
ちなみに、インスペクターは30度, 0度になってました。

角度だからfloatにしたけど、整数がいいの!

解決策

ということで、Mathf.Round()で四捨五入してみたら、整数になった♪

rot = Mathf.Round ( obj.transform.eulerAngles.z );

f:id:nico-taniku:20170929074511p:plain:h500

なんか、無理矢理感があるけど、まぁいいかw

以上。