【Unity】MathfのDeg2RadとRad2Degの使い方ってちょっと迷うよね
Mathfを使う時にちょっと迷ったのが、Deg2RadとRad2Degの使い方。
Degは度数法で表した角度でDegreesの略、Radは弧度法で表した国際単位系の角度の単位であるRadianです。
タイトルに挙げたstaticなプロパティは、これらをお互いに変換してくれるものです。
でもこれ、最初はメソッドと勘違いしていたから、どうやって使ったらいいか分らなかったんですよね。
同じように悩む人もいるかもしれないし、メモしておきます。
環境
macOS 10.13 High Sierra
Unity2018.1.0f2
Deg2RadとRad2Degの使い方
早速使い方なんだけど、度数法を弧度法にしたい時にはDeg2Radを数値に掛け、弧度法を度数法にしたい時にはRad2Degを数値に掛けます。
つまりこのDeg2RadとRad2Degは変換用の値ってこと。
Deg2Radは\(\frac{2\pi}{360}\)の計算結果を返し、Rad2Degは逆に\(\frac{360}{2\pi}\)の計算結果を返します。
ぶっちゃけスクリプトリファレンスを読めばそのまま書いてあるんですけど、初心者の頃はそれすらハードルが高かったのでめっちゃ混乱した記憶があります。
サンプル
Deg2Radを使って角度をラジアンに変換し、コンソールに出力します。
この出力結果はこうなります。値がfloatで返ってくるため、ちょっと馴染みがないかも。180度ではちゃんと\(\pi\)になっているので、変換もうまくいってそう。
今度は反対にRad2Degを使ってラジアンを度数法に変換。
これをコンソールに出力すると以下のようになります。Deg2Radで変換したのと綺麗に反対になっています。
floatでラジアンをダイレクトに指定するのは大変なので、Mathf.PIを使って計算するのがおすすめです。
Deg2RadとRad2Degはいつ使う?
これらのフィールドを使った変換は、スクリプトの中で三角関数を使う時に一緒に使われることが多いかと思います。
例えばsinとcosを使って周期的な運動を表現したい場合に変換が必要になるかもしれません。
スクリプトの中で角度を指定する場合には、90度といったように直感的に操作したくても、sinやcosの引数はラジアンで指定する必要があります。また、arcsinやarccosで角度を取り出したい時にも、戻り値はラジアンになっています。
スクリプト内の計算だけで完結するのであれば全部ラジアンで指定するのも良いですが、TransformのRotationと値を連動させたい時には角度の方が何かと便利。なのでここで変換が必要になってきます。
三角関数系はラジアン、ゲームオブジェクトをいじる系は角で表される傾向にあるので、二つをまたいで値を処理したい時は変換することを視野に入れるといいかも。
ゲーム開発の攻略チャートを作りました!
-
前の記事
【Unity】Mathfの切り上げ、切り捨て、偶数丸め。使い分けが大事よね 2018.07.03
-
次の記事
【Unity】HeaderAttributeを使ってフィールドを整理してみなイカ? 2018.07.05
コメントを書く