I can think of a couple of ways to approach this.
First, maybe you could just make the collision shape small (and in the center) of your visual object. Then, triggering a collision would require a good amount of overlap. That wouldn't necessarily be the 90% you requested, but you might be able to approximate it.
Alternatively, to be more accurate, when a collision is triggered, maybe you could get the bounding boxes of the items in question (maybe via $CollisionShape2D.get_shape().get_extents()
) and calculate the amount of overlap yourself. If it's sufficient, do what you need to. Otherwise, ignore it.