Which Object Calls OnCollisionEnter()?

When a collision happens, does the object with the rigidbody have to call the OnCollisionEnter, or can either? I’m having a problem where the OnCollisionEnter object is on an object without a rigidbody, and will not call when hitting the Player, which has a rigidbody.

Both objects have box colliders, and neither are marked as triggers.

Edit: This issue no longer happens in newer versions of Unity.

OnCollisionEnter is called on any object involved in a Collision event.

If the OnCollisionEnter function is in a script on the Player, it will fire in that script with the ‘collider’ parameter indicating the other object. You could try putting this function on the other object and see if both fire, indicating each other.

The stock Unity player controllers have their own private physics and collision implementations. As mentioned in comments above, they have their own, different callbacks defined.

This is a pain in the butt. I pretty much always build my own player objects instead unless its for a very quick test of something else.