예제 #1
0
    private void GenerateNoise()
    {
        var seedX = Random.Range(0, 1000);
        var seedY = Random.Range(0, 1000);

        for (int x = 0; x < BoardSize; x++)
        {
            for (int y = 0; y < BoardSize; y++)
            {
                float amplitude   = 1;
                float frequency   = 1;
                float noiseHeight = 0;
                for (int o = 0; o < Octaves; o++)
                {
                    float sampleX = (seedX + x) / NoiseScale * frequency;
                    float sampleY = (seedY + y) / NoiseScale * frequency;

                    float perlinValue = Mathf.PerlinNoise(sampleX, sampleY) * 2 - 1;
                    noiseHeight += perlinValue * amplitude;
                    amplitude   *= persistance;
                    frequency   *= lacunarity;
                }

                var transformed = (int)(noiseHeight * 10);
                board[x, y]        = new TileGenData();
                board[x, y].Height = transformed;
            }
        }
    }
예제 #2
0
 private void InitializeBoard()
 {
     board = new TileGenData[BoardSize, BoardSize];
 }