コード例 #1
0
 public static TerrainData GenerateLandmasses(TerrainData data, TerrainSettings settings, NoiseMap noiseMap)
 {
     noiseMap.XRandomOffset = Random.Range(0, 10000);
     noiseMap.ZRandomOffset = Random.Range(0, 10000);
     for (int x = 0; x < data.xSize; x++)
     {
         for (int z = 0; z < data.zSize; z++)
         {
             Vector3 position   = new Vector3(x * settings.tileSize, 0, z * settings.tileSize);
             float   noiseValue = noiseMap.GetLayeredPerlinValueAtPosition(x, z);
             if (noiseValue < settings.oceanPercent)
             {
                 data.GetTileAtCoordinates(x, z).ReplaceTile(TileType.OceanFloor, position, Vector3.zero);
                 data.GetTileAtCoordinates(x, z).elevationValue = noiseValue;
             }
             else if (noiseValue > settings.mountainLevel)
             {
                 data.GetTileAtCoordinates(x, z).ReplaceTile(TileType.Mountain, position, Vector3.zero);
                 data.GetTileAtCoordinates(x, z).elevationValue = noiseValue;
             }
             else
             {
                 data.GetTileAtCoordinates(x, z).ReplaceTile(TileType.Plains, position, Vector3.zero);
                 data.GetTileAtCoordinates(x, z).elevationValue = noiseValue;
             }
         }
     }
     return(data);
 }
コード例 #2
0
 public static void VaryTileElevation(GameObject tileGameObject, NoiseMap noise)
 {
     MeshFilter[] meshFilters = tileGameObject.GetComponentsInChildren <MeshFilter>();
     Mesh[]       allMeshes   = new Mesh[meshFilters.Length];
     for (int i = 0; i < meshFilters.Length; i++)
     {
         allMeshes[i] = meshFilters[i].sharedMesh;
     }
     for (int i = 0; i < allMeshes.Length; i++)
     {
         Vector3[] vertices = allMeshes[i].vertices;
         for (int j = 0; j < vertices.Length; j++)
         {
             vertices[i] = new Vector3(vertices[i].x, noise.GetLayeredPerlinValueAtPosition(vertices[i].x, vertices[i].z), vertices[i].z);
         }
         allMeshes[i].vertices = vertices;
     }
 }