private ICarouselElement FindCenterElement(float deltaX) { ICarouselElement centerElement = null; for (int i = 0; i < elements.Count; i++) { if (elements[i] == currentElement) { if (deltaX > 0 && i > 0) { centerElement = elements[i - 1]; numberLvl = i - 1; } else if (deltaX < 0 && i < elements.Count - 1) { centerElement = elements[i + 1]; numberLvl = i + 1; } else { centerElement = currentElement; } break; } } return(centerElement); }
private ICarouselElement FindCenterElement(float deltaX) { ICarouselElement centerElement = null; int k = 0; for (int i = 0; i < elements.Count; i++) { if (elements[i] == currentElement) { k = i + 1; if (deltaX > 0 && i - 1 >= 0) { centerElement = elements[i - 1]; NumberLvl = (k - 1); textNumberLevel.text = NumberLvl.ToString(); } else if (deltaX < 0 && i + 1 < elements.Count) { centerElement = elements[i + 1]; NumberLvl = (k + 1); textNumberLevel.text = NumberLvl.ToString(); } else { centerElement = currentElement; } break; } } return(centerElement); }
private void CheckCurrentElement(float deltaX) { ICarouselElement centerElement = FindCenterElement(deltaX); if (centerElement != currentElement) { SetCurrentElement(centerElement); } }
private IEnumerator TweenToElement(ICarouselElement target) { while (true) { Vector2 currentPosition = target.Position; Vector2 targetPosition = Vector2.Lerp(currentPosition, Vector2.zero, tweenSpeed * Time.deltaTime); foreach (var element in elements) { element.Translate(targetPosition - currentPosition); } if (Mathf.Abs(target.Position.x) < 0.01f) { yield break; } yield return(null); } }
/// <summary> /// Инициализация элементов карусели /// </summary> public void Initialization() { StopAllCoroutines(); buttonLvl[0].onClick.AddListener(() => ChangePage(false)); buttonLvl[1].onClick.AddListener(() => ChangePage(true)); numberLvl = 0; currentElement = null; elements = new List <ICarouselElement>(); foreach (RectTransform child in transform) { AddElement(child); } elementsIndex = new List <ICarouselElement>(elements); SetCurrentElement(elementsIndex[0]); }
private void SetCurrentElement(ICarouselElement element) { buttonLvl[0].gameObject.SetActive(true); buttonLvl[1].gameObject.SetActive(true); if (elements.Count == 1) { buttonLvl[0].gameObject.SetActive(false); buttonLvl[1].gameObject.SetActive(false); } else if (numberLvl == 0) { buttonLvl[0].gameObject.SetActive(false); } else if (numberLvl == elements.Count - 1) { buttonLvl[1].gameObject.SetActive(false); } currentElement = element; }
private void SetCurrentElement(ICarouselElement element) { for (int i = 0; i < elements.Count; i++) { buttonLvl[0].SetActive(true); buttonLvl[1].SetActive(true); if (NumberLvl == 1) { buttonLvl[0].SetActive(false); } else if (NumberLvl == 2) { buttonLvl[1].SetActive(false); } if (element == elementsIndex[i]) { OnChangeElement?.Invoke(i); } } currentElement = element; }