You could check:
if distance(player.X,player.Y,object.X,object.Y)<variable:
set player position to (object.X,objectY)
set movement to zero (i.e. stop inputs, bullet behaviour, whatever)
variable would be whatever the maximum distance player can travel in 1 tick, to ensure you catch it (in fact I guess it could be half that distance - just have a play around with the figure).
Distance returns the absolute value so it's direction independent.