Slide and Snap

I’m having trouble figuring out the code to make an object slide or snap.

I.e. imagine a checkerboard. I want it to be able to move only horizontally or vertically, from any square. But I also want to make it feel smooth like sliding (i.e. not just snap from square to square).

Any ideas?

Thanks!