One thing I might add is that you could do this with physical objects, if you want smoothness and realism, just bear in mind that physical scripts don't really stand up too well to lag, and they can be a little unpredictable, so build in plenty of contingency (i.e., ensure object a actually collides with object B).
As Qie rightly says, there are plenty of ways to achieve it, but your trade off is how good you want it to look and how reliably you want it to operate.
Feel free to contact me in-world if you want some help with this - I do quite a bit of this sort of thing.