using UnityEngine; using UnityEngine.UI; public class CoinFlipUI : MonoBehaviour { [Header("UI")] public Image coinImage; // сам UI-объект с картинкой public Sprite headsSprite; // орёл public Sprite tailsSprite; // решка [Header("Spin Settings")] public float spinSpeed = 360f; // градусов в секунду public bool autoSpin = true; // крутится постоянно private bool showingHeads = true; private Color originalColor; private bool frozen = false; // флаг «заморозки» private void Awake() { if (coinImage != null) originalColor = coinImage.color; // сохраняем исходный цвет } /// Делаем монету серой и останавливаем вращение public void FreezeCoin() { if (coinImage != null) { coinImage.color = Color.grey; coinImage.sprite = headsSprite; // всегда показываем первый спрайт // сбрасываем вращение, чтобы монета смотрела "вперёд" coinImage.rectTransform.localEulerAngles = Vector3.zero; } frozen = true; } /// Возвращаем монету в нормальное состояние и включаем вращение public void UnfreezeCoin() { if (coinImage != null) coinImage.color = originalColor; frozen = false; } void Update() { if (frozen || !autoSpin) return; // крутим монетку coinImage.rectTransform.Rotate(Vector3.up * spinSpeed * Time.deltaTime); float yAngle = coinImage.rectTransform.localEulerAngles.y; // меняем спрайт на оборотной стороне if (yAngle > 90f && yAngle < 270f && showingHeads) { coinImage.sprite = tailsSprite; showingHeads = false; } else if ((yAngle <= 90f || yAngle >= 270f) && !showingHeads) { coinImage.sprite = headsSprite; showingHeads = true; } } }