viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec87fa11d0283141b58444220b0c04398dc02aecd306e5106d27f9242498b3123f1b2433ed7e591799c1ab4356465dadcf7255b66b627d1e3c58


사실 사용하는 버텍스 배열만 바꾸고 코드 복붙 노가다였음

계단도 결국 육면체 두개가 위아래로 붙어있는 구조니깐 큐브를 생성하는 규칙에 맞춰서 사용되는 버텍스만 바꿔주면 됨


    public void AddStair(List<Vector3> vertices, List<int> triangles, List<Vector4> uvs, List<Vector4> uv2, Block block, Vector3 pos)

    {

        Vector3[] stairVertices;

        if (Mathf.Approximately(block.value, 0))

            stairVertices = this.stairVertices;

        else if (Mathf.Approximately(block.value, 1))

            stairVertices = this.stairVerticesXP;

        else if (Mathf.Approximately(block.value, 2))

            stairVertices = this.stairVerticesZM;

        else

            stairVertices = this.stairVerticesXM;


        //아랫쪽

        //위

        int ind = vertices.Count;

        vertices.Add(pos + stairVertices[4]);

        vertices.Add(pos + stairVertices[5]);

        vertices.Add(pos + stairVertices[6]);

        vertices.Add(pos + stairVertices[7]);

        AddStairTexture(uvs, uv2, 0, block.ID);

        triangles.Add(ind);

        triangles.Add(ind + 2);

        triangles.Add(ind + 1);

        triangles.Add(ind + 2);

        triangles.Add(ind + 3);

        triangles.Add(ind + 1);


        //아래

        ind = vertices.Count;

        vertices.Add(pos + stairVertices[2]);

        vertices.Add(pos + stairVertices[3]);

        vertices.Add(pos + stairVertices[0]);

        vertices.Add(pos + stairVertices[1]);

        AddStairTexture(uvs, uv2, 1, block.ID);

        triangles.Add(ind);

        triangles.Add(ind + 2);

        triangles.Add(ind + 1);

        triangles.Add(ind + 2);

        triangles.Add(ind + 3);

        triangles.Add(ind + 1);


        //x+

        ind = vertices.Count;

        vertices.Add(pos + stairVertices[1]);

        vertices.Add(pos + stairVertices[3]);

        vertices.Add(pos + stairVertices[5]);

        vertices.Add(pos + stairVertices[7]);

        AddStairTexture(uvs, uv2, 2, block.ID);

        triangles.Add(ind);

        triangles.Add(ind + 2);

        triangles.Add(ind + 1);

        triangles.Add(ind + 2);

        triangles.Add(ind + 3);

        triangles.Add(ind + 1);


        //x-

        ind = vertices.Count;

        vertices.Add(pos + stairVertices[2]);

        vertices.Add(pos + stairVertices[0]);

        vertices.Add(pos + stairVertices[6]);

        vertices.Add(pos + stairVertices[4]);

        AddStairTexture(uvs, uv2, 3, block.ID);

        triangles.Add(ind);

        triangles.Add(ind + 2);

        triangles.Add(ind + 1);

        triangles.Add(ind + 2);

        triangles.Add(ind + 3);

        triangles.Add(ind + 1);


        //z+

        ind = vertices.Count;

        vertices.Add(pos + stairVertices[3]);

        vertices.Add(pos + stairVertices[2]);

        vertices.Add(pos + stairVertices[7]);

        vertices.Add(pos + stairVertices[6]);

        AddStairTexture(uvs, uv2, 4, block.ID);

        triangles.Add(ind);

        triangles.Add(ind + 2);

        triangles.Add(ind + 1);

        triangles.Add(ind + 2);

        triangles.Add(ind + 3);

        triangles.Add(ind + 1);


        //z-

        ind = vertices.Count;

        vertices.Add(pos + stairVertices[0]);

        vertices.Add(pos + stairVertices[1]);

        vertices.Add(pos + stairVertices[4]);

        vertices.Add(pos + stairVertices[5]);

        AddStairTexture(uvs, uv2, 5, block.ID);

        triangles.Add(ind);

        triangles.Add(ind + 2);

        triangles.Add(ind + 1);

        triangles.Add(ind + 2);

        triangles.Add(ind + 3);

        triangles.Add(ind + 1);


        //윗쪽


        //위

        ind = vertices.Count;

        vertices.Add(pos + stairVertices[8 + 4]);

        vertices.Add(pos + stairVertices[8 + 5]);

        vertices.Add(pos + stairVertices[8 + 6]);

        vertices.Add(pos + stairVertices[8 + 7]);

        AddStairTexture(uvs, uv2, 6, block.ID);

        triangles.Add(ind);

        triangles.Add(ind + 2);

        triangles.Add(ind + 1);

        triangles.Add(ind + 2);

        triangles.Add(ind + 3);

        triangles.Add(ind + 1);


        //아래

        ind = vertices.Count;

        vertices.Add(pos + stairVertices[8 + 2]);

        vertices.Add(pos + stairVertices[8 + 3]);

        vertices.Add(pos + stairVertices[8 + 0]);

        vertices.Add(pos + stairVertices[8 + 1]);

        AddStairTexture(uvs, uv2, 7, block.ID);

        triangles.Add(ind);

        triangles.Add(ind + 2);

        triangles.Add(ind + 1);

        triangles.Add(ind + 2);

        triangles.Add(ind + 3);

        triangles.Add(ind + 1);


        //x+

        ind = vertices.Count;

        vertices.Add(pos + stairVertices[8 + 1]);

        vertices.Add(pos + stairVertices[8 + 3]);

        vertices.Add(pos + stairVertices[8 + 5]);

        vertices.Add(pos + stairVertices[8 + 7]);

        AddStairTexture(uvs, uv2, 8, block.ID);

        triangles.Add(ind);

        triangles.Add(ind + 2);

        triangles.Add(ind + 1);

        triangles.Add(ind + 2);

        triangles.Add(ind + 3);

        triangles.Add(ind + 1);


        //x-

        ind = vertices.Count;

        vertices.Add(pos + stairVertices[8 + 2]);

        vertices.Add(pos + stairVertices[8 + 0]);

        vertices.Add(pos + stairVertices[8 + 6]);

        vertices.Add(pos + stairVertices[8 + 4]);

        AddStairTexture(uvs, uv2, 9, block.ID);

        triangles.Add(ind);

        triangles.Add(ind + 2);

        triangles.Add(ind + 1);

        triangles.Add(ind + 2);

        triangles.Add(ind + 3);

        triangles.Add(ind + 1);


        //z+

        ind = vertices.Count;

        vertices.Add(pos + stairVertices[8 + 3]);

        vertices.Add(pos + stairVertices[8 + 2]);

        vertices.Add(pos + stairVertices[8 + 7]);

        vertices.Add(pos + stairVertices[8 + 6]);

        AddStairTexture(uvs, uv2, 10, block.ID);

        triangles.Add(ind);

        triangles.Add(ind + 2);

        triangles.Add(ind + 1);

        triangles.Add(ind + 2);

        triangles.Add(ind + 3);

        triangles.Add(ind + 1);


        //z-

        ind = vertices.Count;

        vertices.Add(pos + stairVertices[8 + 0]);

        vertices.Add(pos + stairVertices[8 + 1]);

        vertices.Add(pos + stairVertices[8 + 4]);

        vertices.Add(pos + stairVertices[8 + 5]);

        AddStairTexture(uvs, uv2, 11, block.ID);

        triangles.Add(ind);

        triangles.Add(ind + 2);

        triangles.Add(ind + 1);

        triangles.Add(ind + 2);

        triangles.Add(ind + 3);

        triangles.Add(ind + 1);

        

    }