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