I'm starting to work on my "Main Menu" screen. My plan is to have some non-interactive game action going on in the background. I drew up an idea to implement a conveyor belt. I had three ideas for this and implemented two of them.
The first (unimplemented) idea consists of creating a surface that detects collisions. When an object has collided with that surface, an impulse is applied in the direction of the conveyor belt direction. I think this would work, but seems kinda kludgy.
The second idea consists of creating several rotating circles (ie. gears). Here's a picture of that implementation:
The third implementation took quite a while to figure out. It deals with defining a chained set of objects (that I call the ChainLink) and two gears. I took a bit of thinking to figure out an algorithm to define the chain link lengths and how you can programmatically adjust the width / height. The biggest sticking point was a snafu I had with drawing the chain to revolve around the gears -- I was using degrees and the (poorly documented) API I was using didn't indicate that my units should have been in radians. Whoops. I ran into this before and was a bit frustrated that it was something as simple as that. At any rate, here's an example of the conveyor belt I made up.
There's still a bit of slop to it, so I added a 'magic' variable that I named 'tension' that allows you to adjust the size of the gears. This either tightens up a loose ChainLink or loosens up one that is too tight. I've tried it on a couple of different sized gears / widths between gears and it works pretty well.