コード例 #1
0
    //instantiate resource prefabs
    public void InitResource(int x, int y)
    {
        float perlinNoise = perlinMap[new Vector2Int(x, y)];

        //float perlinNoiseL = perlinMap[new Vector2Int(x - 1, y)];
        //float perlinNoiseR = perlinMap[new Vector2Int(x + 1, y)];
        //float perlinNoiseB = perlinMap[new Vector2Int(x, y - 1)];
        //float perlinNoiseT = perlinMap[new Vector2Int(x, y + 1)];

        foreach (terrainProp item in terrainPropList)
        {
            if (perlinNoise > item.min && perlinNoise < item.max)
            {
                float treeRand  = Random.Range(0f, 1f);
                float stoneRand = Random.Range(0f, 1f);
                float yTreeRand = Random.Range(0f, 1f);
                float slimeRand = Random.Range(0f, 1f);

                if (item.smooth == 0)
                {
                    tilesManager.SetTileCollider(x, y);
                }

                if (treeRand < item.treeProb)
                {
                    Transform tree = Instantiate(treePrefab[0], new Vector3(x * tilesManager.cellSize, y * tilesManager.cellSize, 0), Quaternion.identity);
                    tree.SetParent(resourcesParent);
                    tree.gameObject.GetComponent <SpriteRenderer>().sortingOrder = -y;
                    resourcesMap.Add(new Vector2Int(x, y), tree);
                }
                else if (stoneRand < item.stoneProb)
                {
                    int       stoneIndex = Mathf.FloorToInt(Random.Range(0, stonePrefab.Length));
                    Transform stone      = Instantiate(stonePrefab[stoneIndex], new Vector3(x * tilesManager.cellSize, y * tilesManager.cellSize, 0), Quaternion.identity);
                    stone.SetParent(resourcesParent);
                    stone.gameObject.GetComponent <SpriteRenderer>().sortingOrder = -y;
                    resourcesMap.Add(new Vector2Int(x, y), stone);
                }
                else if (yTreeRand < item.yTreeProb)
                {
                    Transform yTree = Instantiate(yTreePrefab[0], new Vector3(x * tilesManager.cellSize, y * tilesManager.cellSize, 0), Quaternion.identity);
                    yTree.SetParent(resourcesParent);
                    yTree.gameObject.GetComponent <SpriteRenderer>().sortingOrder = -y;
                    resourcesMap.Add(new Vector2Int(x, y), yTree);
                }
                else if (slimeRand < item.slimeProb)
                {
                    Transform slime = Instantiate(slimePrefab[0], new Vector3(x * tilesManager.cellSize, y * tilesManager.cellSize, 0), Quaternion.identity);
                    slime.SetParent(resourcesParent);
                    slime.gameObject.GetComponent <SpriteRenderer>().sortingOrder = -y;
                    resourcesMap.Add(new Vector2Int(x, y), slime);
                }
            }
        }
    }