void Update() { if (!_complete) { return; } Vector3 start = Vector3.zero; Vector3 end = Vector3.zero; Vector3 middle = Vector3.zero; if (_curveT >= 1.0f) { if (_currentCell < _cells.Count) { _currentCell++; } if (_currentCell >= _cells.Count) { return; } _curveT = 0; } _selectedCell = _cells [_currentCell]; SetInterpPoints(out start, out end, out middle); trail.transform.position = CurveVelocity(_curveT, start, middle, end); _curveT += 0.025f; }
IEnumerator SetUpSpiral() { FibonacciCell firstCell = Instantiate(cellObj) as FibonacciCell; float initSize = CalculateFibonacciNumber(); firstCell.cellDirection = CellDirection.up; StartCoroutine(firstCell.SetUp(0, 0, initSize, -initSize)); _line.SetPosition(0, new Vector3(initSize, -initSize)); _cells.Add(firstCell); yield return(new WaitForSeconds(buildTime)); for (int i = 0; i < cellCount; i++) { int modulos = i % 4; FibonacciCell cell = null; float size = CalculateFibonacciNumber(); FibonacciCell lastCell = null; float top; float left; float right; float bottom; if (_cells.Count > 0) { lastCell = _cells[i]; } //x = left, y == top switch (modulos) { case 0: //left cell = Instantiate(cellObj) as FibonacciCell; cell.cellDirection = CellDirection.left; top = lastCell.top; left = lastCell.left - size; right = lastCell.left; bottom = lastCell.top - size; _line.SetPosition(i + 1, new Vector3(right, top)); StartCoroutine(cell.SetUp(top, left, right, bottom)); break; case 1: //down cell = Instantiate(cellObj) as FibonacciCell; cell.cellDirection = CellDirection.down; top = lastCell.bottom; left = lastCell.left; right = lastCell.left + size; bottom = top - size; _line.SetPosition(i + 1, new Vector3(left, top)); StartCoroutine(cell.SetUp(top, left, right, bottom)); break; case 2: //right cell = Instantiate(cellObj) as FibonacciCell; cell.cellDirection = CellDirection.right; bottom = lastCell.bottom; left = lastCell.right; right = left + size; top = bottom + size; _line.SetPosition(i + 1, new Vector3(left, bottom)); StartCoroutine(cell.SetUp(top, left, right, bottom)); break; case 3: //up cell = Instantiate(cellObj) as FibonacciCell; cell.cellDirection = CellDirection.up; top = lastCell.top + size; left = lastCell.right - size; right = lastCell.right; bottom = lastCell.top; _line.SetPosition(i + 1, new Vector3(right, bottom)); StartCoroutine(cell.SetUp(top, left, right, bottom)); break; } if (cell) { _cells.Add(cell); } yield return(new WaitForSeconds(buildTime)); } _complete = true; }