コード例 #1
0
    //GameObject[] FindClosestFlowerGroup(int groupSize)
    //{
    //    GameObject[] group = new GameObject[groupSize];
    //    GameObject startFlower = flower[0];
    //    group[0] = startFlower;
    //    flower.RemoveAt(0);

    //    for (int i = 1; i < groupSize; i++)
    //    {
    //        float closestDist = float.MaxValue;
    //        int closestIndex = -1;

    //        for (int j = 0; j < flower.Count; j++)
    //        {
    //            float currDist = (startFlower.transform.position - flower[j].transform.position).sqrMagnitude;
    //            if (currDist < closestDist)
    //            {
    //                closestDist = currDist;
    //                closestIndex = j;
    //            }
    //        }

    //        group[i] = flower[closestIndex];
    //        flower.RemoveAt(closestIndex);
    //    }

    //    return group;
    //}

    public GameObject SpawnTree(NormalTreeGenerationData treeGenData, bool findGround)
    {
        GameObject instance = Instantiate(generatedNormalTreePrefab);

        instance.GetComponent <NormalTree>().Generate(
            Random.Range(treeGenData.widthRange.x, treeGenData.widthRange.y)
            , Random.Range(treeGenData.heightRange.x, treeGenData.heightRange.y)
            , new Vector3(0.75f, 0.75f, 0.75f)
            , treeGenData.radius
            , treeGenData.segmentHeight
            , treeGenData.childLevels
            , Random.Range(treeGenData.branchesAmountRange.x, treeGenData.branchesAmountRange.y)
            , Random.Range(treeGenData.nestedTreeAmountRange.x, treeGenData.nestedTreeAmountRange.y));

        trees.Add(instance.GetComponent <Tree>());

        if (findGround)
        {
            PlaceOnTerrainOnRandomPos(instance.transform);
        }

        return(instance);
    }
コード例 #2
0
 void SpawnTrees()
 {
     for (int i = 0; i < NewWorldData.countDictionary[TerrainSettingType.NormalTree]; i++)
     {
         NormalTreeGenerationData treeGenData = new NormalTreeGenerationData {
             widthRange              = defaultTreeWidthFromTo
             , heightRange           = defaultTreeHeightFromTo
             , radius                = Random.Range(1.0f, 1.5f)
             , segmentHeight         = 1.6f
             , childLevels           = 1
             , branchesAmountRange   = NormalTree.GetDefaultTreeBrachesAmount()
             , nestedTreeAmountRange = NormalTree.GetDefaultTreeNestedTreesAmount()
         };
         SpawnTree(treeGenData, true);
     }
     for (int i = 0; i < NewWorldData.countDictionary[TerrainSettingType.TallTree]; i++)
     {
         SpawnTallTree(true);
     }
     for (int i = 0; i < NewWorldData.countDictionary[TerrainSettingType.ChristmasTree]; i++)
     {
         SpawnChristmasTree(true);
     }
 }