我寫了幾個函數來生成一些我需要的管形網格。但是,當我對其應用紋理時,紋理沿Z軸向下延伸。當應用於網格時紋理拉伸而不是平鋪?
所以我寫了一個更簡單的演示,其中包含6個頂點和4個三角形。它基本上是立方體的兩面,連在一邊。紋理重視我在X,Y平面上存在的方向,但在X,Z平面上,紋理伸展而不是平鋪。
的結果是這樣的:
在後面的廣場上有正確的紋理(這是一個白色的背景,在每個角落的彩色方塊)。左邊的正方形頂部有一條奇怪的紫色條紋,底部有一條綠色條紋。由於紫色不在原始紋理中,我假設它以某種方式在紋理或其他物體上進行平均。
我確定這個問題是相當基礎的,但我對Unity非常陌生。提前致謝!
產生這是代碼:
void textureTest(){
Vector3[] vertices = new Vector3[6];
vertices [0] = new Vector3 (0,0,0);
vertices [1] = new Vector3 (1,0,0);
vertices [2] = new Vector3 (0,-1,0);
vertices [3] = new Vector3 (1,-1,0);
vertices [4] = new Vector3 (0,0,-1);
vertices [5] = new Vector3 (0,-1,-1);
GameObject newTunnel = new GameObject ("TextureTest");
Mesh newMesh = new Mesh();
newTunnel.AddComponent<MeshFilter>();
newTunnel.AddComponent<MeshRenderer>();
newMesh.vertices = vertices;
Vector2[] uvs = new Vector2[newMesh.vertices.Length];
for (int i = 0; i < uvs.Length; i++) {
uvs [i] = new Vector2 (newMesh.vertices [i].x, newMesh.vertices [i].y);
}
newMesh.uv = uvs;
int[] triangles = new int[]{0,1,2,3,2,1,5,4,0,2,5,0};
newMesh.triangles = triangles;
newMesh.RecalculateNormals();
newTunnel.GetComponent<MeshFilter>().mesh = newMesh;
if (blockMaterial) {
newTunnel.renderer.material = blockMaterial;
}
newTunnel.AddComponent<MeshCollider>();
}
編輯:我使用貼圖就在這裏。我添加它是因爲屏幕截圖有點黑。
這做到了!非常感謝!我顯然需要閱讀如何紫外線的工作,因爲我不完全*爲什麼*的作品。再次感謝! – kidl33t
@ kidl33t我剛剛編輯了一些更多解釋的答案。 –
我現在看到!再次感謝您的及時回覆。我一直試圖弄清楚這個好幾個小時! – kidl33t