Пример #1
0
    public void AlignWith(SwirlPipe pipe)
    {
        float relativeRotation = Random.Range(0, curveSegment) * xRotation / pipeSegment;

        transform.SetParent(pipe.transform, false);
        transform.localPosition = Vector3.zero;
        transform.localRotation = Quaternion.Euler(0f, 0f, -pipe.curveAngle);
        transform.Translate(0f, pipe.curveRadius, 0f);
        transform.Rotate(relativeRotation, 0f, 0f);
        transform.Translate(0f, -curveRadius, 0f);
        transform.SetParent(pipe.transform.parent);
    }
Пример #2
0
    private void Awake()
    {
        if (pipeType == PipeType.easy)
        {
            this.name = "SwirlPipeSystemEasy";
            pipePos   = new Vector3(0.0f, Random.Range(1000.0f, 2000.0f), Random.Range(1000.0f, 1500.0f));
        }
        else if (pipeType == PipeType.hard)
        {
            this.name = "SwirlPipeSystemHard";
            pipePos   = new Vector3(0.0f, Random.Range(1500.0f, 2500.0f), -Random.Range(1000.0f, 1500.0f));
        }
        this.transform.position = pipePos;


        pipes = new SwirlPipe[pipeCount];
        for (int i = 0; i < pipeCount; i++)
        {
            pipes[i] = Instantiate <SwirlPipe>(pipePrefab);
            SwirlPipe pipe = pipes[i];

            Vector3 pos = pipe.transform.localPosition;



            if (pipeType == PipeType.easy)
            {
                if (i == 15 || i == 30)
                {
                    pipe.name = "easyPipeParent" + smallCount;
                    Items.easyPipeCollectablesItemsPositions.Add(CircumferencePoint(pos, pipe.CurveAngle - pipe.pipeRadius, pipe.CurveRadius));
                    smallCount++;
                }
                else
                {
                    createCollectables(pos, pipe.CurveRadius, pipe.CurveAngle - pipe.pipeRadius, pipe.transform);
                }
            }

            if (pipeType == PipeType.hard)
            {
                if (i == 10 || i == 30 || i == 50 || i == 70)
                {
                    pipe.name = "hardPipeParent" + hardCount;
                    Items.hardPipeCollectablesItemsPositions.Add(CircumferencePoint(pos, pipe.CurveAngle - pipe.pipeRadius, pipe.CurveRadius));
                    hardCount++;
                }
                else
                {
                    createCollectables(pos, pipe.CurveRadius, pipe.CurveAngle - pipe.pipeRadius, pipe.transform);
                }
            }



            pipe.transform.SetParent(transform, false);

            if (i > 0)
            {
                pipe.AlignWith(pipes[i - 1]);
            }
        }


        if (pipeType == PipeType.easy)
        {
            int lastIndex = pipes.Length - 1;
            Items.fourPoints2.Add(CircumferencePoint(pipes [0].transform.position, pipes [0].CurveAngle - pipes [0].pipeRadius, pipes [0].CurveRadius));
            Items.fourPoints3.Add(CircumferencePoint(pipes [lastIndex].transform.position, pipes [lastIndex].CurveAngle - pipes [lastIndex].pipeRadius, pipes [lastIndex].CurveRadius));
        }
        if (pipeType == PipeType.hard)
        {
            int lastIndex = pipes.Length - 1;
            Items.fourPoints1.Add(CircumferencePoint(pipes [0].transform.position, pipes [0].CurveAngle - pipes [0].pipeRadius, pipes [0].CurveRadius));
            Items.fourPoints4.Add(CircumferencePoint(pipes [lastIndex].transform.position, pipes [lastIndex].CurveAngle - pipes [lastIndex].pipeRadius, pipes [lastIndex].CurveRadius));
        }
    }