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); }
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)); } }