Untitled

 avatar
unknown
plain_text
2 years ago
3.4 kB
8
Indexable
 IEnumerator StartMovingPieces(Vector2 swipeDirection)
 {


     // Time taken to move one piece to the next position
     float moveDuration = 0.5f;
     float elapsedTime = 0f;
     Renderer renderer = boundary.GetComponent<Renderer>();
     Bounds bounds = renderer.bounds;

     GameObject last = assemblyLine[assemblyLine.Count - 1];


     Vector3 startPosition = last.transform.position;
     Quaternion startRotation = last.transform.rotation;


     Vector2 targetPosition = Vector2.zero;
     Quaternion targetRotation = assemblyLine[0].transform.rotation;

     List<Vector2> startPositions = new List<Vector2>();
     List<Quaternion> startRotations = new List<Quaternion>();

     List<Vector2> targetPositions = new List<Vector2>();
     List<Quaternion> targetRotations = new List<Quaternion>();

     if (swipeDirection == Vector2.up)
     {
         targetPosition = new Vector2(assemblyLine[0].transform.position.x, bounds.max.y);
     }

     else if (swipeDirection == Vector2.down)
     {
         targetPosition = new Vector2(assemblyLine[0].transform.position.x, bounds.min.y);

     }

     else if (swipeDirection == Vector2.left)
     {
         targetPosition = new Vector2(bounds.min.x, assemblyLine[0].transform.position.y);
     }

     else if (swipeDirection == Vector2.right)
     {
         targetPosition = new Vector2(bounds.max.x, assemblyLine[0].transform.position.y);
     }

     for (int x = 0; x < assemblyLine.Count - 1; x++)
     {
         startPositions.Add(assemblyLine[x].transform.position);
         startRotations.Add(assemblyLine[x].transform.rotation);

         targetPositions.Add(assemblyLine[x + 1].transform.position);
         targetRotations.Add(assemblyLine[x + 1].transform.rotation);

         if (x == assemblyLine.Count - 2)
         {
             targetPositions.Add(last.transform.position);
             targetRotations.Add(last.transform.rotation);
         }

     }

     RotateList(last);



     //initial while loop to make gear move to end of screen
     while (elapsedTime < moveDuration)
     {


         elapsedTime += Time.deltaTime;


         last.transform.position = Vector2.Lerp(startPosition, targetPosition, elapsedTime / moveDuration);
         last.transform.rotation = Quaternion.Lerp(startRotation, targetRotation, elapsedTime / moveDuration);
         SetNewPositionLastElement(bounds, last);

         for(int x = )

         if (Vector2.Distance(last.transform.position, new Vector2(assemblyLine[1].transform.position.x, assemblyLine[1].transform.position.y)) < 1f)
         {
             elapsedTime = 0f;
             startPosition = last.transform.position;
             startRotation = last.transform.rotation;
             targetPosition = assemblyLine[1].transform.position;
             targetRotation = assemblyLine[1].transform.rotation;

         }


         yield return null;
     }


     //second loop to make it go towards another item's pos
     while (elapsedTime < 0.5f)
     {
         elapsedTime += Time.deltaTime;

         last.transform.position = Vector2.Lerp(startPosition, targetPosition, 1f);
         last.transform.rotation = Quaternion.Lerp(startRotation, targetRotation, 1f);
         last.transform.rotation = targetRotation;

         yield return null;
     }


 }
Editor is loading...
Leave a Comment