MRが楽しい

MRやVRについて学習したことを書き残す

UnityのMathf関数を使って値を指定の範囲に制限する その2

今日は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