今日はUnityの小ネタ枠です。
UnityのMathf関数を使って値を指定の範囲に制限する方法についてです。
今回はMathf.Repeatを使って指定値の余剰値で値を制限します。
UnityEngine.Mathf
UnityEngine.Mathfは一般的な数学関数を扱うためのクラスです。
docs.unity3d.com
Repeat関数を利用して値を指定の範囲に制限することができます。
値は範囲の余剰値で返されるので、値の増加に合わせて0~上限の間をループします。
docs.unity3d.com
サンプルスクリプト
Repeat関数の動作を確認する以下のサンプルスクリプトを作成しました。
・RepeatTest.cs
using UnityEngine; public class RepeatTest : MonoBehaviour { [ContextMenu("RepeatTestFloat")] public void RepeatTestFloat() { // Mathf.Repeatメソッドは第一引数の値を第二引数の値で割った余りを返す // 余剰演算子と異なり、浮動小数点数で動作する Debug.Log(UnityEngine.Mathf.Repeat(Time.time, 1.5f)); } [ContextMenu("RepeatTestAngle")] public void RepeatTestAngle() { // Mathf.Repeatメソッドを使って角度を0.0fから360.0fの範囲内に正規化する Debug.Log(UnityEngine.Mathf.Repeat(this.transform.eulerAngles.y, 360.0f)); } }
RepeatTestFloatを実行すると、Time.timeの値を0~1.5の範囲に制限した値を返します。
Repeatは余剰演算子と異なり、浮動小数点数で動作します。
RepeatTestAngleを実行すると、Repeat関数を使って角度の値を0~360の値に正規化した値を返します。
Tips
値を指定の範囲内でループさせず、下限上限で止めたい場合はClamp関数を利用してください。
bluebirdofoz.hatenablog.com