예제 #1
0
    void Start()
    {
        GameObject seedObject = GameObject.Find(MapGeneratorSeed.objectName);

        if (seedObject == null)
        {
            seedObject       = new GameObject(MapGeneratorSeed.objectName);
            mapGeneratorSeed = seedObject.AddComponent <MapGeneratorSeed>();
            DontDestroyOnLoad(seedObject);
        }
        else
        {
            mapGeneratorSeed = seedObject.GetComponent <MapGeneratorSeed>();
        }

        buttonPlay.onClick.AddListener(OnPlayClick);
        buttonQuit.onClick.AddListener(OnQuitClick);
        buttonAbout.onClick.AddListener(OnAboutClick);
        buttonRandomSeed.onClick.AddListener(OnRandomSeedClick);
        buttonGenerate.onClick.AddListener(OnGenerateClick);
        buttonCancel.onClick.AddListener(OnCancelClick);
        buttonBack.onClick.AddListener(OnBackClick);

        Random.InitState((int)System.DateTime.Now.Ticks);

        OnRandomSeedClick();
    }
예제 #2
0
    public MapData GenerateMapData(Vector2 center)
    {
        GameObject seedObject = GameObject.Find(MapGeneratorSeed.objectName);

        if (seedObject != null)
        {
            MapGeneratorSeed mapGeneratorSeed = seedObject.GetComponent <MapGeneratorSeed>();
            noiseGenerator.SetSeed(mapGeneratorSeed.GetSeed());
        }

        float[,] noiseMap   = noiseGenerator.Generate(mapWidth, mapHeight, center + offset);
        float[,] falloffMap = new float[0, 0];

        bool useFalloff = falloffGenerator != null;

        if (useFalloff)
        {
            falloffMap = falloffGenerator.Generate(mapWidth, mapHeight);
        }

        for (int y = 0; y < mapHeight; y++)
        {
            for (int x = 0; x < mapWidth; x++)
            {
                if (useFalloff)
                {
                    noiseMap[x, y] = Mathf.Clamp(noiseMap[x, y] - falloffMap[x, y], 0, 1);
                }

                float currentHeight = noiseMap[x, y];
                if (currentHeight > maxNoiseHeight)
                {
                    maxNoiseHeight = currentHeight;
                }
            }
        }

        maxHeight = transform.localScale.y * heightMultiplier * heightCurve.Evaluate(1) * maxNoiseHeight;
        textureData.UpdateData(terrainMaterial, minHeight, maxHeight);

        return(new MapData(noiseMap));
    }