Mathfライブラリとは?
プログラミングと数学は切っても切れませんが、UnityにはMathf
というライブラリが用意されています。
これは数学関数を集めた静的クラスで、ゲーム開発でよく使う数学的な処理を簡単に実装できます。
C#
のSystem.Math
に似ていますが、float
型に特化しており、Unity特有の処理が含まれているのが特徴です。
主な機能とよく使われる関数
三角関数
中学の数学で習う三角関数のメソッド群が用意されています。
引数はすべてラジアンで指定します。度(°)ではないため注意してください。
Mathf.Sin(float f)
:サイン(正弦)Mathf.Cos(float f)
:コサイン(余弦)Mathf.Tan(float f)
:タンジェント(正接)
そのほかの逆三角関数も用意されています:
Mathf.Asin(float f)
:アークサイン(逆正弦)Mathf.Acos(float f)
:アークコサイン(逆余弦)Mathf.Atan(float f)
:アークタンジェント(逆正接)
補間
2つの値を時間経過で補間するメソッド群です。
初期値をa
、最終値をb
、経過時間をt
として渡すことで、その時間に応じた中間の値を取得できます。
t
の値は0f
~1f
の範囲で指定します。
Mathf.Lerp(a, b, t)
:線形補間(Linear Interpolation)Mathf.LerpUnclamped(a, b, t)
:クランプされない**Lerp
**(t
が0f
~1f
を超えても補間可能)Mathf.SmoothStep(a, b, t)
:スムーズな曲線的補間(より自然な変化を実現)
値の操作
値を操作・制限するためのメソッド群です。
特に範囲外の値を使わせたくない場面で役立ちます。
Mathf.Clamp(v, min, max)
:v
の値をmin
〜max
の範囲に制限しますMathf.Clamp01(v)
:v
の値を0
〜1
の範囲に制限しますMathf.Repeat(t, length)
:t
をlength
の範囲でループさせます(t % length
のような挙動)Mathf.PingPong(t, length)
:t
をlength
の範囲で往復させます(行って戻る動きを再現)
四則演算など
こちらは、数学でよく使われる基本的なメソッド群です。
Mathf.Abs(float v)
:絶対値を返します(例:3 → 3
)Mathf.Pow(float v, float p)
:v
のp
乗(累乗)を計算しますMathf.Sqrt(float v)
:平方根を計算します(v
≥ 0 の場合)
その他にも、対数を扱う以下のメソッドがあります:
Mathf.Log(float f)
:自然対数(底e
)を計算しますMathf.Log10(float f)
:常用対数(底10
)を計算します
数学的な補助
2つの値a
,b
に対して小さい方・大きい方を返すメソッドです。
Mathf.Min(a, b)
:小さい方の値を返しますMathf.Max(a, b)
:大きい方の値を返します
四捨五入、切り捨て、切り上げを行うメソッドです。
Mathf.Round(float v)
:v
を四捨五入しますMathf.Floor(float v)
:v
を切り捨て(小さい方へ丸め)ますMathf.Ceil(float v)
:v
を切り上げ(大きい方へ丸め)ます
符号を取得するメソッドです。
Mathf.Sign(float v)
:v
が正の値なら1
、負の値なら1
を返します
定数
数学でよく使う定数も用意されています。
定数 | 値 | 説明 |
---|---|---|
PI | 約3.141592f | 円周率、所謂πです |
Deg2Rad | 約0.01745329f | 角度に掛けることでラジアンに変換できます |
Rad2Deg | 約57.29578f | ラジアンに掛けることで角度に変換します |
Epsilon | 約1.4e-45f | 0に限りなく近い最小の正の浮動小数です |
その他
他にもいくつかの便利なメソッドが用意されています。
Mathf.Approximately(a, b)
:浮動小数点の誤差を考慮して、a
とb
がほぼ等しいかを判定しますMathf.DeltaAngle(float current, float target)
:current
とtarget
の角度差を180
度から180
度の範囲で返します
まとめ
今回は、Unity
における算術ライブラリMathf
について紹介しました。
ゲーム開発では、キャラクターの動きやエフェクト、UI
のアニメーションなど、
さまざまな場面で数学的な処理が必要になります。
一見難しそうに感じるかもしれませんが、Mathf
クラスには基本的な計算や補間、角度の処理などがひと通り用意されているため、
これらをうまく活用することで開発をスムーズに進めることができます。
数学を完全に避けるのは難しいですが、便利な関数を知っておくだけでも大きな助けになります。
ぜひ積極的にMathf
を使いこなして、より効率的な開発に役立ててみてください。