25 lines
848 B
C#
25 lines
848 B
C#
|
|
using UnityEngine;
|
||
|
|
|
||
|
|
namespace OnlyScove.Scripts
|
||
|
|
{
|
||
|
|
[System.Serializable]
|
||
|
|
public class CameraCollisionHandler
|
||
|
|
{
|
||
|
|
[Header("Collision Settings")]
|
||
|
|
[SerializeField] private LayerMask collisionLayers;
|
||
|
|
[SerializeField] private float cameraRadius = 0.2f;
|
||
|
|
public float CheckCollision(Vector3 focusPosition, Quaternion currentRotation, float targetDistance, float minimumDistanceAllowed)
|
||
|
|
{
|
||
|
|
RaycastHit hit;
|
||
|
|
Vector3 rayStart = focusPosition;
|
||
|
|
Vector3 rayDirection = currentRotation * Vector3.back;
|
||
|
|
|
||
|
|
if (Physics.SphereCast(rayStart, cameraRadius, rayDirection, out hit, targetDistance, collisionLayers))
|
||
|
|
{
|
||
|
|
return Mathf.Max(minimumDistanceAllowed, hit.distance - 0.1f);
|
||
|
|
}
|
||
|
|
return targetDistance;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|