private IEnumerator BranchGenerationUpdate(Color startColor, Color endColor) { var speed = GetSpeed; BranchSpeed = speed; Debug.Log(GENERATION_INTERVAL); while (true) { // GENERATION_INTERVAL / RANDOM_GENERATION_INTERVAL_FACTOR yield return(new WaitForSeconds(GetInterval())); float nextBranchCoord = GetRandomXPosition; float sizeOfSpace = GetRandomSpacing; var rightBranch = Instantiate(branchPrefab).GetComponent <BranchFall>(); var leftBranch = Instantiate(branchPrefab).GetComponent <BranchFall>(); var leafColorLeft = leftBranch.GetComponent <LeafColorChanger>(); leafColorLeft.Init(startColor, endColor); var leafColorRight = rightBranch.GetComponent <LeafColorChanger>(); leafColorRight.Init(startColor, endColor); rightBranch.transform.position = new Vector3(nextBranchCoord + sizeOfSpace, 12, 0); leftBranch.transform.position = new Vector3(nextBranchCoord - sizeOfSpace, 12, 0); Vector3 newScale = leftBranch.transform.localScale; newScale.x *= -1; rightBranch.transform.localScale = newScale; rightBranch.Init(speed, queen.position.y); leftBranch.Init(speed, queen.position.y); rightBranch.OnBranchPassedQueen += () => OnBranchPassedQueen?.Invoke(); leftBranch.OnBranchPassedQueen += () => OnBranchPassedQueen?.Invoke(); } }
private IEnumerator FallUpdate(float queenY) { yield return(new WaitUntil(() => transform.position.y < queenY)); OnBranchPassedQueen?.Invoke(); }