I am trying to make some kind of simulation program with Unity. The simulation includes a missile launched from an aircraft and a terrain. I get the coordinate data required for the movement of the missile from another program using a socket connection. I created an explosion effect for the missile to explode as soon as the missile and the terrain collided. But the explosion effect is not triggered in any way.
I used the OnCollisionEnter() method to detect the collision, but this method does not seem to work.
The missile has its own rigidbody and collider and The terrain has Terrain Collider, but still no collision is detected and the missile passes through the terrain.
What could be the cause of this error?
EDIT :
I thank everyone for their help, but none of the solutions worked. I solved the error using the OnTriggerEnter method. For this, I also had to enlarge the object's collider a little more.

rb.MovePosition(Vector3.MoveTowards(...))and that should be called in FixedUpdate. - HumanWritesCould this be the cause of the erroryes if you are doing this inUpdateor in general directly on the transform without passing it through the Rigidbody as metnioned by HumanWrites you might already have passed the colliders before Unities Physics get to check for collisions - derHugo