First of all, thank you for your prompt response.
The 2nd point, as you say, is unlikely to happen because the collisions work really fine.
So I've tried changing the code of the collision trigger to add a small vector to the collision point; this vector is ensuring that the collision is not on the bounds, but closer to the center of the collided tile. But the results are just the same as if we didn't offset this collision point (and I've verified the code printing out the vector): the result is "-1".
Then I've printed out all the collision coords to see them ("collision.transform.position") and to my surprise, in some tiles (the could seem random but they are always the same ones) "OnCollisionEnter" is not being called! And in all the other ones where "OnCollisionEnter" is being triggered, "collision.transform.position" is always (0, 0, 0)!! Then if I print "collision.contacts[0].point" it is fine and GetTileIdAtPosition works great, but as with many tiles "OnCollisionEnter" is not being called, I cannot play a collision SFX
I've unlinked, regenerated and checked the "TileMap Render Data" during runtime and the colliders are fine along with their physics materials. Everything seems ok, but...
The gameobject that is colliding with the TileMap is a ball with a sphere collider, with its physics material, a rigidbody of mass 1, not kinematic, with gravity... And all the collisions work visually perfectly. The problem is that "OnCollisionEnter" is not being called with many tiles, and with the tiles that it is being called, "collision.transform.position" is zero ??
What could I have missed? What could be wrong? I don't know where more to look at. Do you need any more data that I could check and tell you back about?
Thank you VERY MUCH for your help!