C # генератор единства мира шестиугольник - PullRequest
0 голосов
/ 31 января 2019

Я сделал некоторые изменения.1 °, чтобы облегчить код временно, я использую коробки.2 ° Я использую математику. Практика шума, но некоторые сетки держатся подальше от других.3 ° Мне нужно строить участки с блоками, но они округлые.Пока я смог сделать это здесь, я оставлю коды и изображения, чтобы попытаться описать мою проблему.

Ошибка местности

Что мне нужносоздать

public void Start()
{
    myPos = this.transform.position;
    CreateMap(CreateMapMatrix(100, 40),100, 40);

}

public Vector3[,] CreateMapMatrix(int width, int height)
{
    matrixMap = new Vector3[width, height];

    for (int x = 0; x < width; x++)
    {
        for (int z = 0; z < height; z++)
        {

            float h = Mathf.PerlinNoise((seed + myPos.x + x) / width,
                (myPos.z + z) / height) * x;

            h = Mathf.Floor(h);

            matrixMap[x, z] = new Vector3(h, 0, z);
        }

    }

    return matrixMap;

}



    void CreateMap(Vector3[,] pos, int width, int height)
    {
        for (int x = 0; x < width; x++)
        {
            for (int z = 0; z < height; z++)
            {
                GameObject Obj = Instantiate(hexTransform[0]);
            Obj.transform.position = pos[x,z];

            }
        }
    }

1 Ответ

0 голосов
/ 01 февраля 2019

Вы должны попытаться использовать Perlin Noise для достижения генерации мира.Такие игры, как Minecraft и Raft используют его.

https://docs.unity3d.com/ScriptReference/Mathf.PerlinNoise.html

https://forum.unity.com/threads/open-source-procedural-hexagon-terrain.233296/

...