ここでは数学関係のメソッドや定数をもつMathfクラスについて説明します。
※この記事で使用しているUnityのバージョン:Unity2019.1
Mathfとは
Mathfは、数学関係の処理を行うメソッドや数学に関する定数を多数もつクラスです。三角関数やべき乗、平方根といった数学ではおなじみの計算を手軽に行えるほか、値の範囲を制限したり補完したりするなどゲームで重宝する便利な機能も備わっています。
主なMathfの定数・メソッド
ではゲーム制作でよく使うMathfの便利な定数・メソッドを紹介していきます。
- 角度の単位の変換(Deg2Rad、Rad2Deg)
- 無限大(Infinity)
- 円周率(PI)
- 絶対値(Abs)
- 切り上げ(Ceil、CeilToInt)
- 切り捨て(Floor、FloorToInt)
- 四捨五入(Round、RoundToInt)
- 三角関数(Sin、Cos、Tan)
- 角度を取得(Atan2)
- 範囲を制限(Clamp、Clamp01)
- 最小値を取得(Min)
- 最大値を取得(Max)
- 線形補完(Lerp、LerpAngle)
- べき乗(Pow)
- 平方根(Sqrt)
- 符号の取得(Sign)
※これら以外にも色々な定数やメソッドがあるので、詳しく知りたい方は公式リファレンスをご覧ください。
定数
角度の単位の変換(Deg2Rad、Rad2Deg)
角度の値に
- Mathf.Deg2Radを掛けると度→ラジアン
- Mathf.Rad2Degを掛けるとラジアン→度
に変換できます。
無限大(Infinity)
Mathf.Infinityで無限大を取得します(具体的な数値ではない)。レイ(Ray)を無限遠に飛ばす、といった場面でよく出てきます。
円周率(PI)
Mathf.PIで円周率(3.14…)を取得できます。
メソッド
絶対値(Abs)
Mathf.Absで引数の絶対値を得ることができます。例えば、Mathf.Abs(-10)とすると10が返ってきます。
切り上げ(Ceil、CeilToInt)
Mathf.Ceilは引数の値以上の最小の整数を返します。例えば、Mathf.Ceil(1.1f)とすると2が返ってきます。
返ってくる値は整数ですがfloat型なので、int型がほしい場合はMathf.CeilToIntを使いましょう。
切り捨て(Floor、FloorToInt)
Mathf.Floorは引数の値以下の最大の整数を返します。例えば、Mathf.Floor(1.1f)とすると1が返ってきます。
返ってくる値はやはりfloat型なので、int型がほしい場合はMathf.FloorToIntを使いましょう。
四捨五入(Round、RoundToInt)
Mathf.Roundは引数を四捨五入します。例えば、Mathf.Round(1.5f)とすると2が返ってきます。
切り上げや切り捨てと同様に戻り値はfloat型なので、int型がほしい場合はMathf.RoundToIntを使いましょう。
三角関数(Sin、Cos、Tan)
Mathf.Sin、Mathf.Cos、Mathf.Tanでそれぞれサイン、コサイン、タンジェントの計算を行えます。引数の単位はラジアンなので間違えないように注意してください。
角度を取得(Atan2)
Mathf.Atan2で2点間の角度を求めることができます。返ってくる値の単位はラジアンなので注意しましょう。
範囲を制限(Clamp、Clamp01)
Mathf.Clampを使えば、ある値を指定した最小値~最大値の間に制限することができます。例えばプレイヤーキャラクターの座標を画面内に制限したい場合などに便利です。非常によく使うメソッドなのでぜひ覚えておきましょう。
ちなみに、値を0~1の間で制限したい場合はMathf.Clamp01を使うと引数を2つ省略できます。
最小値を取得(Min)
Mathf.Minで2つの引数のうち小さい方を得ることができます。例えばMathf.Min(0,1)なら0が返ってきます。
最大値を取得(Max)
Mathf.Maxで2つの引数のうち大きい方を得ることができます。例えばMathf.Max(0,1)なら1が返ってきます。
線形補完(Lerp、LerpAngle)
Mathf.Lerpを使えば、引数の2つ値の間を線形補完した値を取得することが可能です。線形補完というのは、簡単に言うと次のように2つの値を直線で結ぶことです。このメソッドではその直線上の値を取得できるというわけですね。
なお、角度に対して使いたい場合はMathf.LerpAngleを使ったほうが便利です。
べき乗(Pow)
Mathf.Powを使えばべき乗(例:2の2乗、とか)を計算することができます。
平方根(Sqrt)
Mathf.Sqrtを使えば引数の平方根(ルート)を求めることができます。
符号の取得(Sign)
Mathf.Signで引数の符号を取得できます。引数がプラスか0のときは1、マイナスのときは-1が返ってきます。0のときは0が返ってくるわけではないので注意しましょう。