I hear you
The docs say on contact_monitor:
If true, the RigidBody2D will emit signals when it collides with another RigidBody2D.
Note: By default the maximum contacts reported is set to 0, meaning nothing will be recorded, see max_contacts_reported.
However in the signals, it says this:
body_entered ( Node body )
Emitted when a collision with another PhysicsBody2D or TileMap occurs. Requires contact_monitor to be set to true and max_contacts_reported to be set high enough to detect all the collisions. TileMaps are detected if the TileSet has Collision Shape2Ds.
body the Node, if it exists in the tree, of the other PhysicsBody2D or TileMap.
The signal needs contact monitor and max contacts to be set, in order to be emitted when a collision with another PhysicsBody2D occurs.
And in contact_monitor it says RigidBody2D instead. It is what it is
I don't understand whether it is intentional or not. But it is misleading.
And I didn't understand what your problem really is, and I am not sure I understand it yet.
The signal is not being emitted even though you turn contact_monitor to true and set max_contacts_reported bigger than 0? I have no idea of a solution.
But if the signal gets emitted with every physics body, you can check what this body is as a solution.
If the signal gets emitted with every physics body but not with rigid body, I also don't understand how is that happening.
I hope someone has a better answer.