slajder pionowy

Ogólne pytania na temat Unity3D

slajder pionowy

Postprzez Beryś » 13 Lis 2018, 14:49

HEj

czy ktoś mi może pomóc przerobić ten kod? Chodzi o slajder, wszystko jest ok, jest to do slajdera poziomego.
A jak to przerobić na pionowy, trzeba zapewne pozmieniać x i y ale wtedy się jakoś rozjeżdża.... tak żeby te slajdy płynnie się zmieniały i ustawiały się na swoje miejsce...
Z góry dziękuję!

Kod: Zaznacz wszystko
public RectTransform panel;   // To hold the ScrollPanel
   public Button[] bttn;
   public RectTransform center;   // Center to compare the distance for each button
   public int startButton;
   public int k = 0; //Will control where in the array you are

public float[] distance;   // All buttons' distance to the center
   public float[] distReposition;
   public bool dragging = false;   // Will be true, while we drag the panel
   private int bttnDistance;   // Will hold the distance between the buttons
   private int minButtonNum;   // To hold the number of the button, with smallest distance to center
   private int bttnLength;
        private int tweenID;

void Start(){
           bttnLength = bttn.Length;
      distance = new float[bttnLength];
      distReposition = new float[bttnLength];

      // Get distance between buttons
      bttnDistance  = (int)Mathf.Abs(bttn[1].GetComponent<RectTransform>().anchoredPosition.x -
                 bttn[0].GetComponent<RectTransform>().anchoredPosition.x);
                tweenID = LeanTween.moveX (gameObject, 0, 0).id;
               panel.anchoredPosition = new Vector2 ((startButton - 1) * -1280f, 0f);
}
void Update()
   {
      for (int i = 0; i < bttn.Length; i++)
      {
         distReposition[i] = center.GetComponent<RectTransform>().position.x - bttn[i].GetComponent<RectTransform>().position.x;
         distance[i] = Mathf.Abs(distReposition[i]);


      if (distReposition[i] > 2000)
         {
         float curX = bttn[i].GetComponent<RectTransform>().anchoredPosition.x;
            float curY = bttn[i].GetComponent<RectTransform>().anchoredPosition.y;

            Vector2 newAnchoredPos = new Vector2 (curX + (bttnLength * bttnDistance), curY);
            bttn[i].GetComponent<RectTransform>().anchoredPosition = newAnchoredPos;
   }
      
      if (distReposition[i] < -2000)
      {
         float curX = bttn[i].GetComponent<RectTransform>().anchoredPosition.x;
         float curY = bttn[i].GetComponent<RectTransform>().anchoredPosition.y;

         Vector2 newAnchoredPos = new Vector2 (curX - (bttnLength * bttnDistance), curY);
          bttn[i].GetComponent<RectTransform>().anchoredPosition = newAnchoredPos;
         
   }
      }


         float minDistance = Mathf.Min (distance);   // Get the min distance

         for (int a = 0; a < bttn.Length; a++) {
            if (minDistance == distance [a]) {
               minButtonNum = a;
            }
         }


      if (!dragging)
      {
         
         LerpToBttn (bttn[minButtonNum].GetComponent<RectTransform>().anchoredPosition.x);
      }
   }


   void LerpToBttn(float position)
   {
    float newX = Mathf.Lerp (panel.anchoredPosition.x, position, Time.deltaTime *2f);
    Vector2 newPosition = new Vector2 (newX, panel.anchoredPosition.y);

   panel.anchoredPosition = newPosition;

   }

   public void StartDrag()
   {
      dragging = true;

   }

   public void EndDrag()
   {
      dragging = false;
   

   }




Beryś
 
Posty: 55
Rejestracja: 15 Sty 2016, 11:23
Has thanked: 0 time
Been thanked: 0 time

Wróć do Wsparcie Unity

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 7 gości