48 lines
1.6 KiB
C#
48 lines
1.6 KiB
C#
using UnityEngine;
|
|
|
|
namespace OnlyScove.Scripts
|
|
{
|
|
public class EnvironmentScanner : MonoBehaviour
|
|
{
|
|
[SerializeField] private Vector3 forwardRayOffset = new Vector3(0, 2.5f, 0);
|
|
[SerializeField] float forwardRayLength = 10f;
|
|
[SerializeField] LayerMask obstacleLayer;
|
|
[SerializeField] float heightRayLength;
|
|
|
|
public ObstacleHitInfo ObstacleCheck()
|
|
{
|
|
var hitData = new ObstacleHitInfo();
|
|
|
|
var forwardOrigin = transform.position + forwardRayOffset;
|
|
|
|
hitData.forwardHitFound = Physics.Raycast(transform.position + forwardRayOffset,
|
|
transform.forward,
|
|
out hitData.forwardHit,
|
|
forwardRayLength, obstacleLayer
|
|
);
|
|
|
|
Debug.DrawRay(forwardOrigin, transform.forward * forwardRayLength, (hitData.forwardHitFound) ? Color.red : Color.green);
|
|
|
|
if (hitData.forwardHitFound)
|
|
{
|
|
var heightOrigin = hitData.forwardHit.point + Vector3.up * heightRayLength;
|
|
hitData.heightHitFound = Physics.Raycast(heightOrigin, Vector3.down,
|
|
out hitData.heightHit,
|
|
heightRayLength, obstacleLayer);
|
|
|
|
Debug.DrawRay(heightOrigin, Vector3.down * heightRayLength, (hitData.heightHitFound) ? Color.red : Color.green);
|
|
|
|
}
|
|
return hitData;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public struct ObstacleHitInfo
|
|
{
|
|
public RaycastHit forwardHit;
|
|
public RaycastHit heightHit;
|
|
public bool forwardHitFound;
|
|
public bool heightHitFound;
|
|
} |