如何使编程网格固定?

时间:2017-12-18 00:28:47

标签: unity3d

我添加了一个网格:

Mesh mesh;
void Awake() {
    mesh = GetComponent<MeshFilter>().mesh;
}

现在它显示在屏幕上和所有内容上,但我直接通过它。我添加了MeshCollider,但None (Mesh)显示Mesh,这可能是原因,但我不知道如何修复它。

1 个答案:

答案 0 :(得分:0)

您需要设置网格顶点和uv。 你有一个例子来制作一架飞机。 需要将xpos,ypos和zpos替换为所需点的坐标poisiton。

GameObject plane = new GameObject("Plane");
MeshFilter meshFilter = (MeshFilter)plane.AddComponent(typeof(MeshFilter));

Mesh mymesh = new Mesh();
mymesh.name = "MyCustomMesh";
mymesh.vertices = new Vector3[] {
     new Vector3(xpos, ypos, zpos),
     new Vector3(xpos, ypos, zpos),
     new Vector3(xpos, ypos, zpos),
     new Vector3(xpos, ypos, zpos),
 };
 mymesh.uv = new Vector2[] {
     new Vector2 (0, 0),
     new Vector2 (0, 1),
     new Vector2(1, 1),
     new Vector2 (1, 0)
 };
 mymesh.triangles = new int[] { 0, 1, 2, 0, 2, 3};
 mymesh.RecalculateNormals();

meshFilter.mesh = mymesh;
MeshRenderer renderer = plane.AddComponent(typeof(MeshRenderer)) as MeshRenderer;