Работа с 2D играми в Unity предлагает упрощенную разработку и лучшую оптимизацию, однако достижение современных стандартов графики в мобильном гейминге с использованием только 2D может быть вызовом. Один из способов преодолеть это ограничение - создание 2.5D эффектов, в частности, реалистичных теней. В этой статье мы рассмотрим, как создать тени с возможностью редактирования их длины для вашей 2D игры. Часть материалов взята из публикации, отдельное спасибо пользователю badcceb В Unity 2D не предусмотрено ограничения размера тени. Так если мы добавим Light2D => Spot на сцену и будем использовать его как солнце, тени будут бесконечно большие Первым шагом в создании теней для вашей 2D игры является перенос проекта на Universal Render Pipeline (URP) в Unity. Этот процесс начинается с установки URP через Package Manager. Создайте новый URP Asset и активируйте его в настройках проекта (Edit → Project Settings → Graphics). Далее, обновите все материалы проекта для совместимости с URP, используя опцию "Upgrade Project Materials to UniversalRP Materials". Важно сохранить копию вашего проекта перед переносом, чтобы предотвратить потерю данных. Следующим шагом является копирование библиотеки com.unity.render-pipelines.universal из Library/PackageCache в Packages. Это делается для того, чтобы обеспечить доступ и возможность редактирования файлов, которые в противном случае были бы ограничены в Unity и перезаписывали на дефолтные значения. Теперь необходимо изменить следующие скрипты: Light2D.cs, Light2DEditor.cs, и ShadowRendering.cs. Эти изменения позволяют вам контролировать интенсивность и радиус теней в вашем проекте. Light2D.cs - Изменения а) Пройдитесь по скрипту и найдите область m_ShadowIntensity и m_ShadowVolumeIntensity. Добавьте следующее:  [SerializeField] float m_ShadowRadius = 1.42f); б) Затем перейдите вниз туда, где указан «Public LightType LightType» и под ним добавьте следующее: public floatshadowRadius { get => m_ShadowRadius; set => m_ShadowRadius = значение; } Закройте и сохраните Light2d.cs. Light2DEditor.cs — Изменения а) Найдите «private static class Styles», и в этой функции добавьте следующее: public static GUIContent GeneralShadowRadius = EditorGUIUtility.TrTextContent("Shadow Radius"); б) Продвигайтесь вниз по классу, пока не найдете раздел, в котором есть несколько переменных SerializedProperty, и добавьте следующее: SerializedProperty m_ShadowRadius; в) Перейдите к методу «OnEnable» и добавьте следующее: m_ShadowRadius = serializedObject.FindProperty("m_ShadowRadius"); г) В методе «DrawSpotLight» добавьте следующее: EditorGUILayout.Slider(m_ShadowRadius, 0, 1.42f, Styles.generalShadowRadius); Закройте и сохраните Light2DEditor.cs. ShadowRendering.cs — Изменения a) Найдите метод «Public Static Bool RenderShadows», в нем «if (hasShadow)» найдите «var shadowRadius» и отредактируйте код таким образом:  var shadowRadius = light.shadowRadius * light.boundingSphere.radius; Закройте и сохраните ShadowRendering.cs. Применение Изменений и Тестирование После внесения изменений, загрузите ваш проект и добавьте источник света Light2D, выберите Spot. Включите тени и используйте ползунок "Shadow Radius", чтобы наблюдать за изменениями в длине и интенсивности теней. На объекты, которые должны отбрасывать тени обязательно добавьте ShadowCaster2D Реализация реалистичных теней значительно улучшает визуальное восприятие 2D игр, делая их более живыми и динамичными. Для некоторых игр в 2D, Unity не предусмотрели рисовку теней так как хочет этого разработчик. Надеюсь эта статья поможет кому-нибудь  Прикрепляю ниже ссылку на папку где хранится com.unity.render-pipelines.universal@14.0.8 с отредактированными скриптами для правильной работы теней https://drive.google.com/file/d/17i9l7lDfeEy62-saBbcvCv6ZNRQowhBg/view?usp=sharing