Files
Scampz/Assets/Scripts/Input/RayCaster.cs

44 lines
1.4 KiB
C#

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 offsetAngle = Quaternion.AngleAxis(rayCastAngle, transform.right);
// return Physics.Raycast(transform.position, offsetAngle * transform.forward);
//}
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;
}
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);
}
}
}