Why does this Mesh Collider only works when its deactivated in void Awake() and reactivated in Start()? I tried to generate Terrain and i found out if i add the Mesh Collider right in the beginning its works just fine but if i place it after the math for the height calculation i must reactivate it in Start(). (Code is to long for here) Code (CSharp): using UnityEngine; public class Test : MonoBehaviour { void Awake() { Mesh mesh = new Mesh(); Vector3[] vertices = new Vector3[3]; vertices[0] = new Vector3(0, 0, 0); vertices[1] = new Vector3(0, 0, 10); vertices[2] = new Vector3(10, 0, 10); int[] triangles = { 0, 1, 2 }; gameObject.AddComponent<MeshFilter>().mesh = mesh; gameObject.AddComponent<MeshCollider>()/*.enabled = false*/; gameObject.AddComponent<MeshRenderer>(); mesh.vertices = vertices; mesh.triangles = triangles; mesh.RecalculateNormals(); GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube); cube.transform.position = new Vector3(2.5f, 3, 7); cube.AddComponent<Rigidbody>(); } void Start() { //gameObject.GetComponent<MeshCollider>().enabled = true; } }
After editing your mesh try to call mesh.UploadMeshData. It should fix having to deactivate and activate the Mesh Collider component which uses the edited mesh.