//类外
[RequireComponent(typeof(MeshFilter))]
[RequireComponent(typeof(MeshRenderer))]
[RequireComponent(typeof(MeshCollider))]
public Texture2D map;
int w;
int h;
Mesh mesh;
VertexHelper vh;
void Start
{
//根据图片的长宽赋值地形的长宽
w = map.width;
h = map.height;
mesh = new Mesh();
vh = new VertexHelper();
for (int i = 0; i < w; i++)
{
for (int j = 0; j <h; j++)
{
//计算y值
float y = Mathf.PerlinNoise(i * 0.04f, j * 0.04f);
//根据y值生成地形的高低起伏
vh.AddVert(new Vector3(i, y * 10, j), Color.white, new Vector2(i * 1.0f / w, j * 1.0f / h));
if (i<w-1&&j<h-1)
{
vh.AddTriangle(i * h + j, i * h + j + 1, (i + 1) * h + j + 1);
vh.AddTriangle(i * h + j, (i+1) * h + j + 1, (i + 1) * h + j);
}
}
}
vh.FillMesh(mesh);
GetComponent<MeshFilter>().mesh = mesh;
Material mat = new Material(Shader.Find("Standard"));
mat.mainTexture = map;
GetComponent<MeshRenderer>().material = mat;
GetComponent<MeshCollider>().sharedMesh = mesh;
}
08-13
5877
07-21
3034
07-01
1903
06-28
5460