Untitled
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