Files
BABA_YAGA/Assets/Scripts/Camera Controller/CameraOcclusionTransparency.cs
2026-03-27 12:08:16 +07:00

59 lines
1.8 KiB
C#

using UnityEngine;
namespace OnlyScove.Scripts
{
[System.Serializable]
public class CameraOcclusionTransparency
{
[Header("Occlusion Transparency")]
[SerializeField] private bool useTransparency = true;
[SerializeField] private LayerMask transparencyLayers;
[SerializeField] private float fadeAlpha = 0.3f;
private Renderer _lastFadedRenderer;
private Color _originalColor;
public void HandleTransparency(Transform cameraTransform, Vector3 focusPosition)
{
if (!useTransparency)
{
ResetLastRenderer();
return;
}
Vector3 direction = focusPosition - cameraTransform.position;
float distanceToPlayer = direction.magnitude;
RaycastHit hit;
if (Physics.Raycast(cameraTransform.position, direction.normalized, out hit, distanceToPlayer, transparencyLayers))
{
Renderer renderer = hit.collider.GetComponent<Renderer>();
if (renderer != null && renderer != _lastFadedRenderer)
{
ResetLastRenderer();
_lastFadedRenderer = renderer;
_originalColor = renderer.material.color;
Color fadedColor = _originalColor;
fadedColor.a = fadeAlpha;
renderer.material.color = fadedColor;
}
}
else
{
ResetLastRenderer();
}
}
private void ResetLastRenderer()
{
if (_lastFadedRenderer != null)
{
_lastFadedRenderer.material.color = _originalColor;
_lastFadedRenderer = null;
}
}
}
}