예제 #1
0
    public void InitChunk(Vector2 chunkPoss, TerrainGeneratorSettings tgS)
    {
        GetComponent <MeshRenderer>().material = material;
        meshCollider = GetComponent <MeshCollider>();

        ChunkName = Chunk.GenerateChunkName(chunkPoss);

        this.mapGenerator = FindObjectOfType <MapGenerator>() as MapGenerator;
        this.genSets      = tgS;

        this.chunkPoss = chunkPoss;

        this.meshFilter   = GetComponent <MeshFilter>();
        this.meshRenderer = GetComponent <MeshRenderer>();
        mesh = new Mesh();

        material.mainTexture = mapGenerator.textureAtlas.atlas;


        GenerateMesh();


        meshFilter.mesh = mesh;

        UpdateMesh();

        meshCollider.sharedMesh = mesh;
    }
예제 #2
0
    private void GeneratePerlinNoise()
    {
        this.genSets = mapGenerator.GeneratorSettings;
        for (int i = 0, x = 0; x < genSets.chunkSize; x++)
        {
            for (int z = 0; z < genSets.chunkSize; z++)
            {
                float xCoord = ((x + (chunkPoss.x * (genSets.chunkSize - 1))) + genSets.seed) / (genSets.chunkSize * genSets.scale);
                float yCoord = ((z + (chunkPoss.y * (genSets.chunkSize - 1))) + genSets.seed) / (genSets.chunkSize * genSets.scale);

                float value = genSets.maxHeight * (Mathf.PerlinNoise(xCoord, yCoord) * genSets.layer2Value * Mathf.PerlinNoise(xCoord, yCoord));

                vectors[i].y = value;
                i++;
            }
        }
    }