I support the answer given by Abishake Srithar. This is not meant to displace that answer, just add information to it.
A slight caution about the result of this mask.overlap() call. It does not give you the center of where the point of contact might be.
As you can see in the description in the docs here, the overlap is searched for by proceeding top to bottom in columns moving left to right. Which means that overlap() returns the leftmost, upper (sort of) point of the overlap.
So if your update/move of the objects causes the objects to overlap over an area (which is likely), the point returned by overlap() is the leftmost, upper point of that overlap. It is not the center of the area, or the point where the two objects might have first touched if they were not overlapping.
An example is if this were two spheres colliding, it will give you the edge of the overlap and not actually the centerpoint of the collision. This could change your angles of reflection.
This difference can affect the collision physics.
It is likely good enough for most games but I thought it worth pointing out.