70 lines
1.9 KiB
C#
70 lines
1.9 KiB
C#
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; // ńîőđŕí˙ĺě čńőîäíűé öâĺň
|
|
}
|
|
|
|
/// <summary>Äĺëŕĺě ěîíĺňó ńĺđîé č îńňŕíŕâëčâŕĺě âđŕůĺíčĺ</summary>
|
|
public void FreezeCoin()
|
|
{
|
|
if (coinImage != null)
|
|
{
|
|
coinImage.color = Color.grey;
|
|
coinImage.sprite = headsSprite; // âńĺăäŕ ďîęŕçűâŕĺě ďĺđâűé ńďđŕéň
|
|
|
|
// ńáđŕńűâŕĺě âđŕůĺíčĺ, ÷ňîáű ěîíĺňŕ ńěîňđĺëŕ "âďĺđ¸ä"
|
|
coinImage.rectTransform.localEulerAngles = Vector3.zero;
|
|
}
|
|
frozen = true;
|
|
}
|
|
|
|
/// <summary>Âîçâđŕůŕĺě ěîíĺňó â íîđěŕëüíîĺ ńîńňî˙íčĺ č âęëţ÷ŕĺě âđŕůĺíčĺ</summary>
|
|
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;
|
|
}
|
|
}
|
|
}
|