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(); 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; } } } }