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