コード例 #1
0
    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;
            }
        }
    }
コード例 #2
0
    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);
    }