问题背景
最近在开发一个功能,钻孔功能,每一层(段)都需要单独拾取,显示不同的颜色,使用不同材质
问题分析
对于这个功能,由于上述需求,很容易想到用submesh实现,但是主要问题是在于对于Submesh的拾取,如何知道拾取到那一段?
解决方案:
通过Unity中自带的RaycastHit解决,里面的触碰的三角形索引,根据三角面判断所在Submesh。
上代码
获取钻孔Mesh
1 /// <summary> 2 /// 获取gameobject的mesh 3 /// </summary> 4 /// <param name="gameobject">目标物体</param> 5 /// <returns></returns> 6 private Mesh GetMesh(GameObject gameobject) 7 { 8 if (gameobject) 9 { 10 MeshFilter meshFilter = gameobject.GetComponent<MeshFilter>(); 11 if (meshFilter) 12 { 13 Mesh mesh = meshFilter.sharedMesh; 14 if (!mesh) { mesh = meshFilter.mesh; } 15 if (mesh) 16 { 17 return mesh; 18 } 19 } 20 } 21 return (Mesh)null; 22 }