using UnityEngine; public class TransitionSphere : MonoBehaviour { public float duration = 1f; // тривалість анімації в секундах private Material sphereMat; private Color initialColor; private Coroutine currentAnimation; void Start() { // Отримуємо матеріал Renderer rend = GetComponent(); sphereMat = rend.material; // Переконайся, що шейдер підтримує прозорість (для URP Lit) sphereMat.SetFloat("_Surface", 1); // Transparent sphereMat.SetFloat("_Blend", 0); // Alpha Blend initialColor = sphereMat.color; } // Виклик цієї функції запускає анімацію public void PlayAnimation() { // Якщо анімація вже йде, зупиняємо її if (currentAnimation != null) StopCoroutine(currentAnimation); // Початкові значення transform.localScale = Vector3.zero; Color c = initialColor; c.a = 1f; sphereMat.color = c; currentAnimation = StartCoroutine(AnimateSphere()); } private System.Collections.IEnumerator AnimateSphere() { float elapsed = 0f; Vector3 startScale = Vector3.zero; Vector3 endScale = Vector3.one * 100f; while (elapsed < duration) { elapsed += Time.deltaTime; float t = Mathf.Clamp01(elapsed / duration); // Масштаб transform.localScale = Vector3.Lerp(startScale, endScale, t); // Прозорість Color c = sphereMat.color; c.a = Mathf.Lerp(1f, 0f, t); sphereMat.color = c; yield return null; } // Фінальний стан transform.localScale = endScale; Color finalColor = sphereMat.color; finalColor.a = 0f; sphereMat.color = finalColor; currentAnimation = null; } }