using UnityEngine; namespace Scampz.GameJam.Assets.Scripts { public class RayCaster : MonoBehaviour { [SerializeField] private float rayCastDistance = 1f; [SerializeField] private float rayCastAngle = 45f; [SerializeField] private float sphereRadius = 2f; private float currentHitDistance; public bool IsWithinBounds() { var offsetAngleRight = Quaternion.AngleAxis(rayCastAngle, transform.right); var isRayHitting = Physics.SphereCast(transform.position, sphereRadius, offsetAngleRight * transform.forward, out var sphereHit, rayCastDistance); if (isRayHitting) currentHitDistance = sphereHit.distance; else currentHitDistance = rayCastDistance; return currentHitDistance != rayCastDistance; } public bool IsWithinBoundsWithRay() { var offsetAngleRight = Quaternion.AngleAxis(rayCastAngle, transform.right); var isRayHitting = Physics.Raycast(transform.position, offsetAngleRight * transform.forward, out var rayHit, rayCastDistance); if (isRayHitting) currentHitDistance = rayHit.distance; else currentHitDistance = rayCastDistance; return currentHitDistance != rayCastDistance; } private void OnDrawGizmosSelected() { Gizmos.color = Color.red; var offsetAngleRight = Quaternion.AngleAxis(rayCastAngle, transform.right); Gizmos.DrawRay(transform.position, offsetAngleRight * transform.forward); Gizmos.DrawWireSphere(transform.position + (offsetAngleRight * transform.forward) * rayCastDistance, sphereRadius); } } }