Ejemplo n.º 1
0
    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();
        }
    }
Ejemplo n.º 2
0
    private IEnumerator FallUpdate(float queenY)
    {
        yield return(new WaitUntil(() => transform.position.y < queenY));

        OnBranchPassedQueen?.Invoke();
    }