使用Collider Unity将线渲染转换为三维网格



我环顾四周,还没有找到一个有效的答案,所以非常感谢您的帮助!

当前使用此脚本时,该行将创建一个空白网格过滤器。我最接近的是有一个完全不遵循形状网格的偏移简单块。我需要这个,以便能够在碰撞上用线触发声音绘制形状

GameObject go = new GameObject($"LineRenderer");
goLineRenderer = go.AddComponent<LineRenderer>();  
Mesh lineBakedMesh = new Mesh(); //Create a new Mesh (Empty at the moment)
go.AddComponent<MeshFilter>();  
go.GetComponent<MeshFilter>().mesh = lineBakedMesh;
goLineRenderer.BakeMesh(lineBakedMesh,Camera.main, true); //Bake the line mesh to our mesh variable
go.AddComponent<MeshCollider>().sharedMesh = lineBakedMesh; //Set the baked mesh to the MeshCollider
go.GetComponent<MeshCollider>().convex = true; //You need it convex if the mesh have any kind of holes

在我看来,你正在创建一个新的LineRenderer组件,但你没有在它上设置任何点来形成一条线。

在设置正确的LineRenderer.positionCount目标量后,可以使用LineRenderer.SetPosition设置单个点,也可以使用LineRenderer.SetPoisitons一次性分配所有点。特别是如果您要在运行时更新这些点。

否则,通过Inspector根据您的需要简单地添加和配置组件可能会更容易。


既然你说你已经通过Inspector配置了LineRenderer:你可能更想使用吗

goLineRenderer = GetComponent<LineRenderer>();  

为了获得已经添加到与此脚本相同的GameObjects中的组件?