MRが楽しい

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

UnityのMathf関数を使って無限大の値を利用する

今日はUnityの小ネタ枠です。
UnityのMathf関数を使って無限大の値を利用する方法についてです。

UnityEngine.Mathf

UnityEngine.Mathfは一般的な数学関数を扱うためのクラスです。
docs.unity3d.com

本クラスのStatic変数のMathf.Infinityで無限大の値を表現することができます。
docs.unity3d.com

サンプルスクリプト

Mathf.Infinityの動作を確認する以下のサンプルスクリプトを作成しました。
レイキャストの判定を無限遠にするフラグがONのときは距離の値にMathf.Infinityを渡して判定を無限遠にします。
・RaycastInfinityTest.cs

using UnityEngine;

public class RaycastInfinityTest : MonoBehaviour
{
    [Tooltip("Raycastの距離"), SerializeField]
    private float rayDistance = 100.0f;
    
    [Tooltip("Raycastの判定を無限遠にするか"), SerializeField]
    private bool isInfinity = false;
    
    void Update()
    {
        // 無限遠にレイキャストする場合は Mathf.Infinity を使う
        float distance = isInfinity ? Mathf.Infinity : rayDistance;
        
        if (Physics.Raycast(Vector3.zero, Vector3.forward, distance))
        {
            print("レイキャスト上にオブジェクトが存在します");
        }
    }
}

なおRaycast関数はmaxDistanceの引数を渡さないことでも無限遠の判定が行えます。
内部処理としてはmaxDistanceにMathf.Infinityを渡した場合と同じ処理となります。
docs.unity3d.com