我做了一些更改。 1°为暂时简化代码,我使用盒子。 2°我正在使用数学。PerlinNoise练习,但是有些网格远离其他网格。 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];
}
}
}
答案 0 :(得分:1)
您应该尝试使用 Perlin Noise 来完成世界的生成。 Minecraft和Raft等游戏都利用了它。
https://docs.unity3d.com/ScriptReference/Mathf.PerlinNoise.html
https://forum.unity.com/threads/open-source-procedural-hexagon-terrain.233296/