private void LateUpdate() { Vector2 speed = new Vector2(scrollSpeed.x * Time.deltaTime * 60f, scrollSpeed.y * Time.deltaTime * 60f); foreach (var sprRenderer in allSpriteRenderers) { sprRenderer.transform.localPosition += new Vector3(speed.x, speed.y); } positionDelta += VectorHelper.Absolute(speed); if (Mathf.Abs(scrollSpeed.x) > 0 && positionDelta.x >= (int)(sprite.bounds.size.x)) { positionDelta.x = 0; for (int c = 0; c < columns; c++) { for (int r = 0; r < rows; r++) { var sprRenderer = allSpriteRenderers[c * rows + r]; sprRenderer.transform.localPosition = new Vector3(GetTilePosition(c, r).x, sprRenderer.transform.localPosition.y); } } } if (Mathf.Abs(scrollSpeed.y) > 0 && positionDelta.y >= (int)(sprite.bounds.size.y)) { positionDelta.y = 0; for (int c = 0; c < columns; c++) { for (int r = 0; r < rows; r++) { var sprRenderer = allSpriteRenderers[c * rows + r]; sprRenderer.transform.localPosition = new Vector3(sprRenderer.transform.localPosition.x, GetTilePosition(c, r).y); } } } }