using System.Collections; using UnityEngine; public class MenuUi : MonoBehaviour { [Header("Время перемещения блока")] [SerializeField] float blockMoveDuration = 0.6f; [Header("Верхний блок")] [SerializeField] RectTransform TopContainer; private Vector2 TopMenuPosition; [SerializeField] Vector2 TopGameplayOffset; [Header("Нижний блок")] [SerializeField] RectTransform BottomContainer; private Vector2 BottomMenuPosition; [SerializeField] Vector2 BottomGameplayOffset; [Header("Режим на одного")] [SerializeField] RectTransform PveContainer; private Vector2 PveMenuPosition; [SerializeField] Vector2 PveGameplayOffset; [Header("Режим на двоих")] [SerializeField] RectTransform PvpContainer; private Vector2 PvpMenuPosition; [SerializeField] Vector2 PvpGameplayOffset; [Header("Надпись призы закончились")] [SerializeField] RectTransform PrizesOut; private Vector2 PrizesOutMenuPosition; [SerializeField] Vector2 PrizesOutGameplayOffset; [SerializeField] Vector2 PrizesOutGameplayPosition; private Vector2 PrizesOutMenuSizeDelta; [SerializeField] Vector2 PrizesOutGameplaySizeDelta; [Header("Счетчик монет")] [SerializeField] Transform CoinCounter; private Vector2 CoinCounterMenuPosition; [SerializeField] Vector2 CoinCounterGameplayPosition; [Header("Доска")] [SerializeField] Transform Board; private Vector2 BoardMenuPosition; [SerializeField] Vector2 BoardGameplayPosition; private bool _cached = false; bool processing = false; bool Menu; bool Gameplay; void InitializeIfNeed() { if (!_cached) CacheStartParametrs(); } void CacheStartParametrs() { //Кэшируем стартовые позиции и размеры TopMenuPosition = TopContainer.anchoredPosition; BottomMenuPosition = BottomContainer.anchoredPosition; PveMenuPosition = PveContainer.anchoredPosition; PvpMenuPosition = PvpContainer.anchoredPosition; PrizesOutMenuPosition = PrizesOut.anchoredPosition; PrizesOutMenuSizeDelta = PrizesOut.sizeDelta; CoinCounterMenuPosition = CoinCounter.localPosition; BoardMenuPosition = Board.localPosition; _cached = true; } public void OpenMenu() { InitializeIfNeed(); } public void CloseMenu() { InitializeIfNeed(); } IEnumerator OpenGameplayAnim() { float t; //ШАГ 1. ПРЯЧЕМ МЕНЮ t = 0; while (t < 1) { t += Time.deltaTime * 2; t = Mathf.Clamp01(t); TopContainer.anchoredPosition = Vector2.Lerp(TopMenuPosition, TopMenuPosition + TopGameplayOffset, t); PveContainer.anchoredPosition = Vector2.Lerp(PveMenuPosition, PveMenuPosition + PveGameplayOffset, t); PvpContainer.anchoredPosition = Vector2.Lerp(PvpMenuPosition, PvpMenuPosition + PvpGameplayOffset, t); BottomContainer.anchoredPosition = Vector2.Lerp(BottomMenuPosition, BottomMenuPosition + BottomGameplayOffset, t); PrizesOut.anchoredPosition = Vector2.Lerp(PrizesOutMenuPosition, PrizesOutMenuPosition + PrizesOutGameplayOffset, t); PrizesOut.sizeDelta = Vector2.Lerp(PrizesOutMenuSizeDelta, PrizesOutGameplaySizeDelta, t); CoinCounter.localPosition = Vector2.Lerp(CoinCounterMenuPosition, CoinCounterGameplayPosition, t); yield return null; } //ШАГ 1. Показываем доску t = 0; while (t < 1) { t += Time.deltaTime * 2;//скорость надо высчитывать t = Mathf.Clamp01(t); Board.localPosition = Vector2.Lerp(BoardMenuPosition, BoardGameplayPosition, t); PrizesOut.anchoredPosition = Vector3.Lerp(PrizesOutMenuPosition + PrizesOutGameplayOffset, PrizesOutGameplayPosition, t); yield return null; } } IEnumerator OpenMenuAnim() { //ШАГ 1. УБРАТЬ ДОСКУ float t = 0; while (t < 1) { t += Time.deltaTime * 2;//скорости править t = Mathf.Clamp01(t); Board.localPosition = Vector2.Lerp(BoardGameplayPosition, BoardMenuPosition, t); PrizesOut.anchoredPosition = Vector2.Lerp(PrizesOutGameplayPosition, PrizesOutMenuPosition + PrizesOutGameplayOffset, t); yield return null; } //ШАГ 2. ПОКАЗАТЬ МЕНЮ t = 0; while (t < 1) { t += Time.deltaTime * 2; t = Mathf.Clamp01(t); TopContainer.anchoredPosition = Vector2.Lerp(TopMenuPosition + TopGameplayOffset, TopMenuPosition, t); //перемещение кнопок PveContainer.anchoredPosition = Vector2.Lerp(PveMenuPosition + PvpGameplayOffset, PveMenuPosition, t); PvpContainer.anchoredPosition = Vector2.Lerp(PvpMenuPosition + PvpGameplayOffset, PvpMenuPosition, t); PrizesOut.anchoredPosition = Vector2.Lerp(PrizesOutMenuPosition+PrizesOutGameplayOffset, PrizesOutMenuPosition, t); //монетка //float startDistance = Vector3.Distance(coinPanel.position, sCoin); //while (Vector3.Distance(coinPanel.position, sCoin) > 0.01f) //{ // float coinspeed = startDistance * Time.deltaTime * 2; // coinPanel.localPosition = Vector3.MoveTowards(coinPanel.localPosition, sCoin, coinspeed); // yield return null; //} //coinPanel.localPosition = sCoin; //label2.localPosition = Vector3.Lerp(sLabel2, eLabel2, t); //SmallPrizesOut.sizeDelta = Vector2.Lerp(sSmallPrizesOutSize, eSmallPrizesOutSize, t); yield return null; } //animationEnded = true; //gm.botScale.gameObject.SetActive(false); //gm.Player1Scale.gameObject.SetActive(false); //gm.Player2Scale.gameObject.SetActive(false); } }