有些时候需要自定义mesh来绘制目标模型图形什么的,可以代码控制,也可以通过shader去控制,这里介绍代码控制的方法:
基本思路是修改mesh的定点,三角 达到自定义的目的,和上上篇垂直UI.Text 显示异曲同工之处。
由于一个mesh是有顶点信息,和对应三角形组合而成。

如图中的一个Quad比如4个顶点,0,1,2,3 可以组合为2个三角形信息,三角形1由顶点0,1,2 三角形2由定点2,3,0组成 , 组成了一个面

4个顶点 和一个三角形,组合为了一个面

又比如如图的4个顶点,2个三角形生成这样的图形,组成了2个面

又比如4个顶点3个三角形生成这样的图形,组成了3个面。三角顺序 顺时针 才会是你想看的面的绘制 逆时针就是反面了
1 void OnDrawGizmos() 2 { 3 MeshFilter filter = this.GetComponent<MeshFilter>(); 4 MeshRenderer render = this.GetComponent<MeshRenderer>(); 5 var mesh = filter.mesh; 6 7 var ts = this.GetComponentsInChildren<Transform>(); 8 9 Vector3[] vers = new Vector3[ts.Length]; 10 11 for (int i = 0; i < ts.Length; i++) 12 { 13 vers[i] = ts[i].position; 14 } 15 16 var tris = new int[] { 0, 1, 2, 0,1,3,1,2,3 }; 17 18 // mesh.Clear(); 19 mesh.vertices = vers; 20 mesh.triangles = tris; 21 mesh.RecalculateNormals(); 22 mesh.RecalculateBounds(); 23 this.GetComponent<MeshCollider>().sharedMesh = mesh; 24 filter.mesh = mesh; 25 26 }
和Lite2D engine中的顶点有点相似,建模也是只做这些东西,之所以可以这样玩是有些模型网格什么的需要代码去生成,比如地形破坏,比如下图
该游戏是异星探险家,
又或者流体计算等等