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