void UpdateSeemlessTransforms() { for (int i = 0; i < edges.Count; i++) { edgeTransfomrs = edges [i]; edgeTransfomrs.spriteRenderer.transform.Translate(Vector3.right * speed * timeScale * (reverse ? -1f : 1f) * Time.deltaTime, Space.World); } for (int i = 0; i < edges.Count; i++) { edgeTransfomrs = edges [i]; switch (direction) { case DirectionEnum.Right: if (edgeTransfomrs.left.position.x > rightScreenPoint.x) { var x = GetNextEdge(i).left.position.x - edgeTransfomrs.spriteRenderer.transform.position.x.Distance(edgeTransfomrs.right.position.x); edgeTransfomrs.spriteRenderer.transform.position = new Vector3(x, edgeTransfomrs.spriteRenderer.transform.position.y, edgeTransfomrs.spriteRenderer.transform.position.z); } break; case DirectionEnum.Left: if (edgeTransfomrs.right.position.x < leftScreenPoint.x) { var x = GetPreviousEdge(i).right.position.x + edgeTransfomrs.spriteRenderer.transform.position.x.Distance(edgeTransfomrs.left.position.x); edgeTransfomrs.spriteRenderer.transform.position = new Vector3(x, edgeTransfomrs.spriteRenderer.transform.position.y, edgeTransfomrs.spriteRenderer.transform.position.z); } break; } } }
void SetUpSeamlessTransfomrs() { spriteRenderer = objects [0]; edgeTransfomrs = new EdgeTransforms(); edgeTransfomrs.spriteRenderer = spriteRenderer; edgeTransfomrs.left = leftEdge; leftEdge.parent = spriteRenderer.transform; edgeTransfomrs.right = CreateEdgeTransformPoint(spriteRenderer.transform, objects [1].bounds.center.x - objects [1].bounds.extents.x / 2f, spriteRenderer.bounds.center.x + spriteRenderer.bounds.extents.x / 2f, spriteRenderer.transform.position.y, spriteRenderer.transform.position.z); edges.Add(edgeTransfomrs); for (int i = 1; i < objects.Length - 1; i++) { spriteRenderer = objects [i]; edgeTransfomrs = new EdgeTransforms(); edgeTransfomrs.spriteRenderer = spriteRenderer; edgeTransfomrs.left = CreateEdgeTransformPoint(spriteRenderer.transform, spriteRenderer.bounds.center.x - spriteRenderer.bounds.extents.x / 2f, objects [i - 1].bounds.center.x + objects [i - 1].bounds.extents.x / 2f, spriteRenderer.transform.position.y, spriteRenderer.transform.position.z); edgeTransfomrs.right = CreateEdgeTransformPoint(spriteRenderer.transform, objects [i + 1].bounds.center.x - objects [i + 1].bounds.extents.x / 2f, spriteRenderer.bounds.center.x + spriteRenderer.bounds.extents.x / 2f, spriteRenderer.transform.position.y, spriteRenderer.transform.position.z); edges.Add(edgeTransfomrs); } spriteRenderer = objects [objects.Length - 1]; edgeTransfomrs = new EdgeTransforms(); edgeTransfomrs.spriteRenderer = spriteRenderer; edgeTransfomrs.left = CreateEdgeTransformPoint(spriteRenderer.transform, spriteRenderer.bounds.center.x - spriteRenderer.bounds.extents.x / 2f, objects [objects.Length - 2].bounds.center.x + objects [objects.Length - 2].bounds.extents.x / 2f, spriteRenderer.transform.position.y, spriteRenderer.transform.position.z); edgeTransfomrs.right = rightEdge; rightEdge.parent = spriteRenderer.transform; edges.Add(edgeTransfomrs); }