【Unity】MathfのDeg2RadとRad2Degの使い方ってちょっと迷うよね

【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と値を連動させたい時には角度の方が何かと便利。なのでここで変換が必要になってきます。

三角関数系はラジアン、ゲームオブジェクトをいじる系は角で表される傾向にあるので、二つをまたいで値を処理したい時は変換することを視野に入れるといいかも。

     

ゲーム開発の攻略チャートを作りました!

CTA-IMAGE

「ゲームを作ってみたいけど、何から手を付けていいか分からない!」


そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。


ゲームを作り始めた時にぶつかる壁である「何をしたら良いのか分からない」という悩みを吹き飛ばしましょう!