38 lines
1.1 KiB
C#
38 lines
1.1 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 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);
|
|
}
|
|
}
|
|
}
|