2017-12-18 14 views
0

私はメッシュやって追加しました:プログラマチックメッシュをソリッドにする方法は?

Mesh mesh; 
void Awake() { 
    mesh = GetComponent<MeshFilter>().mesh; 
} 

は、今では、画面、すべての上に現れたが、私は右のそれを通って落下。私はMeshColliderを追加しましたが、それはMeshNone (Mesh)を示しています。これが原因かもしれませんが、修正方法はわかりません。

+1

メッシュに 'mesh'プロパティを設定する必要があります。 – Draco18s

+0

メッシュコライダーが使用するメッシュを設定する - > 'GetComponent ()。sharedMesh = mesh;' https://docs.unity3d.com/ScriptReference/MeshCollider-sharedMesh.html – yes

答えて

0

メッシュの頂点とUVを設定する必要があります。 ここには、単一の平面を作成する例があります。 xpos、ypos、zposをあなたの望むポイントの座標で置き換える必要があります。

GameObject plane = new GameObject("Plane"); 
MeshFilter meshFilter = (MeshFilter)plane.AddComponent(typeof(MeshFilter)); 

Mesh mymesh = new Mesh(); 
mymesh.name = "MyCustomMesh"; 
mymesh.vertices = new Vector3[] { 
    new Vector3(xpos, ypos, zpos), 
    new Vector3(xpos, ypos, zpos), 
    new Vector3(xpos, ypos, zpos), 
    new Vector3(xpos, ypos, zpos), 
}; 
mymesh.uv = new Vector2[] { 
    new Vector2 (0, 0), 
    new Vector2 (0, 1), 
    new Vector2(1, 1), 
    new Vector2 (1, 0) 
}; 
mymesh.triangles = new int[] { 0, 1, 2, 0, 2, 3}; 
mymesh.RecalculateNormals(); 

meshFilter.mesh = mymesh; 
MeshRenderer renderer = plane.AddComponent(typeof(MeshRenderer)) as MeshRenderer; 
関連する問題