Beispiel #1
0
    void straightUp()
    {
        PlanetDescriptor pd    = planet.GetComponent <PlanetDescriptor>();
        GameObject       trunk = Instantiate(treeTrunk);

        trunk.GetComponent <SpriteRenderer>().color = pd.colorOptions[Random.Range(0, pd.colorOptions.Count)];
        trunk.transform.SetParent(transform);
        float interval = 3.0f;

        trunk.transform.localPosition = Vector3.zero;
        trunk.transform.rotation      = transform.rotation;
        //trunk.transform.localScale *= interval;
        //float yCrunch = .9f;
        //float spriteHeight = treeSegment.transform.GetChild(0).GetComponent<SpriteRenderer>().sprite.bounds.size.y;
        //float lastHeight = spriteHeight;
        //float totalHeight = calculateTotalHeight(yCrunch, spriteHeight);
        //float lastY = totalHeight;

        Color segmentColor = pd.colorOptions[Random.Range(0, pd.colorOptions.Count)];

        for (int i = 0; i < segmentCount; i++)
        {
            GameObject nextSegment = Instantiate(treeSegment);
            nextSegment.GetComponent <SpriteRenderer>().color = segmentColor;
            nextSegment.transform.SetParent(transform);
            //GameObject centerBottom = nextSegment;
            //float currentHeight = lastHeight * yCrunch;
            //float currentY = lastY - currentHeight;
            //Debug.Log(currentY);
            //nextSegment.transform.localPosition = new Vector3(0, currentY, 0);
            //nextSegment.transform.localScale = new Vector3(nextSegment.transform.localScale.x, Mathf.Pow(yCrunch, i), nextSegment.transform.localScale.z);
            //lastHeight = currentHeight;
            //lastY = currentY;
            //float scalingPenalty;
            //float spacingPenalty;
            //if (i < segmentCount / 2) {
            //    scalingPenalty = i / 2.0f;
            //    spacingPenalty = 0.2f;
            //} else {
            //    scalingPenalty = i / 1.5f;
            //    spacingPenalty = 0.2f;

            //}
            //float scaleVectorX = nextSegment.transform.localScale.x * segmentCount / (scalingPenalty + 3.0f);
            //float scaleVectorY = nextSegment.transform.localScale.y + (1 + i / 2.0f);
            //float scaleVectorY = nextSegment.transform.localScale.y;
            //nextSegment.transform.localScale = new Vector3(scaleVectorX, scaleVectorY, 0);

            //float hypotenuse = lastPosition + (interval / (spacingPenalty * i + 1));
            //float yCoord = lastPosition + interval + 1;
            //lastPosition = yCoord;
            //Vector3 segmentPosition = new Vector3(0, yCoord);
            //nextSegment.transform.localPosition = segmentPosition;
            nextSegment.transform.rotation      = transform.rotation;
            nextSegment.transform.localPosition = new Vector3(0, interval * i + 3);
        }
    }
Beispiel #2
0
    void dropSeeds()
    {
        Vector3        right     = transform.GetChild(1).right;
        Vector3        left      = -1 * right;
        Vector3        seedSpawn = directionBuried * .2f;
        GameObject     seed1     = Instantiate(seed);
        GameObject     seed2     = Instantiate(seed);
        SpriteRenderer sr1       = seed1.GetComponent <SpriteRenderer>();
        SpriteRenderer sr2       = seed2.GetComponent <SpriteRenderer>();

        sr1.sortingOrder = 4;
        sr2.sortingOrder = 4;
        PlanetDescriptor pd = planet.GetComponent <PlanetDescriptor>();

        sr1.color = pd.colorOptions[Random.Range(0, pd.colorOptions.Count)];
        sr2.color = pd.colorOptions[Random.Range(0, pd.colorOptions.Count)];

        seed1.transform.position = transform.position + right * .5f;
        seed2.transform.position = transform.position + left * .5f;
    }