Question by
DerpyGamerYT · Aug 05, 2019 at 12:42 AM ·
meshmeshesmeshrenderer
Why is one side of my mesh cube correct, but the other side isn't?
I am trying to make a cube using a script generated mesh, but one side is half correct while the other side is not. The corresponding sides are top and bottom, but I rotated the square.
Here is my code:
void Start()
{
mesh = new Mesh();
mesh.vertices = GenerateVertices();
mesh.triangles = GenerateTriangles();
mesh.RecalculateNormals();
mesh.RecalculateBounds();
mesh.RecalculateTangents();
meshFilter = this.gameObject.AddComponent<MeshFilter>();
meshFilter.mesh = mesh;
meshCollider.sharedMesh = this.mesh;
}
public Vector3[] GenerateVertices(float up = 0f)
{
return new Vector3[]
{
//bottom
new Vector3(-1, 0 - up, 1),
new Vector3(1, 0 -up, 1),
new Vector3(1, 0 - up, -1),
new Vector3(-1, 0 - up, -1),
new Vector3(0, 0 - up, 0),
new Vector3(0, 0 - up, -1),
new Vector3(0, 0 - up, 1),
new Vector3(-1, 0 - up, 0),
new Vector3(1, 0 - up, 0),
//top
new Vector3(-1, 2 - up, 1),
new Vector3(1, 2 -up, 1),
new Vector3(1, 2 - up, -1),
new Vector3(-1, 2 - up, -1),
new Vector3(0, 2 - up, 0),
new Vector3(0, 2 - up, -1),
new Vector3(0, 2 - up, 1),
new Vector3(-1, 2 - up, 0),
new Vector3(1, 0- up, 0),
//left
new Vector3(-1, 0 - up, 1),
new Vector3(-1, 0 - up, -1),
new Vector3(-1, 2 + up, 1),
new Vector3(-1, 2 + up, -1),
new Vector3(0, 2 + up, -1),
new Vector3(0, 2 + up, 1),
new Vector3(0, 0 - up, -1),
new Vector3(0, 0 - up, 1),
new Vector3(0, 1 - up, 0),
//right
new Vector3(1, 0 - up, 1),
new Vector3(1, 0 - up, -1),
new Vector3(1, 2 + up, 1),
new Vector3(1, 2 + up, -1),
new Vector3(1, 0 - up, 1),
new Vector3(1, 0 - up, -1),
new Vector3(1, 2 + up, 1),
new Vector3(1, 2 + up, -1),
new Vector3(1, 2 + up, -1),
//front
new Vector3(1, 0 - up, -1),
new Vector3(-1, 0 - up, -1),
new Vector3(1, 2 + up, -1),
new Vector3(-1, 2 + up, -1),
new Vector3(1, 0 - up, -1),
new Vector3(-1, 0 - up, -1),
new Vector3(1, 2 + up, -1),
new Vector3(-1, 2 + up, -1),
new Vector3(-1, 2 + up, -1),
//back
new Vector3(-1, 0 - up, 1),
new Vector3(1, 0 - up, 1),
new Vector3(-1, 2 + up, 1),
new Vector3(1, 2 + up, 1),
new Vector3(-1, 0 - up, 1),
new Vector3(1, 0 - up, 1),
new Vector3(-1, 2 + up, 1),
new Vector3(1, 2 + up, 1),
new Vector3(1, 2 + up, 1),
};
}
public int[] GenerateTriangles()
{
return new int[]
{
//top
//top right
1, 6, 4,
8, 1, 4,
7, 4, 6,
0, 7, 6,
//bottom left
5, 4, 7,
3, 5, 7,
//top left
8, 4, 5,
2, 8, 5,
//left
//left
9, 10, 11,
8, 10, 9,
//right
12, 13, 15,
14, 12, 15,
//forward/back
16, 17, 19,
18, 16, 19,
20, 21, 23,
22, 20, 23
};
}
Comment