44 lines
1.1 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|