using UnityEngine; public sealed class RayQueryProbe : MonoBehaviour { [SerializeField] private Camera viewCamera; [SerializeField] private LayerMask queryLayers = ~0; [SerializeField, Min(0.01f)] private float range = 5f; [ContextMenu("Probe Centre Ray (Play Mode)")] public void Probe() { if (!Application.isPlaying || !isActiveAndEnabled) return; if (viewCamera == null || range <= 0f || float.IsNaN(range) || float.IsInfinity(range)) { Debug.LogError("Assign a camera and a finite positive range.", this); return; } Ray ray = viewCamera.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0f)); if (Physics.Raycast(ray, out RaycastHit hit, range, queryLayers, QueryTriggerInteraction.Ignore)) Debug.Log("Hit " + hit.collider.name + " at " + hit.distance, hit.collider); else Debug.Log("No eligible hit in range", this); } }