Files
beyond/Assets/Scripts/DisableShadowsByDistance.cs
2024-11-20 15:21:28 +01:00

44 lines
1.1 KiB
C#

using UnityEngine;
public class DisableShadowsByDistance : MonoBehaviour
{
public float shadowDisableDistance = 40f;
private Camera mainCamera;
void Start()
{
mainCamera = Camera.main;
}
void Update()
{
// Rekursywnie przetwarzaj wszystkie obiekty dziecka
CheckAndDisableShadows(transform);
}
void CheckAndDisableShadows(Transform obj)
{
Renderer objectRenderer = obj.GetComponent<Renderer>();
if (objectRenderer != null)
{
float distance = Vector3.Distance(mainCamera.transform.position, obj.position);
if (distance > shadowDisableDistance)
{
objectRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
}
else
{
objectRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On;
}
}
// Przetwarzaj wszystkie dzieci
foreach (Transform child in obj)
{
CheckAndDisableShadows(child);
}
}
}