You would have to have all the parts separated into unique meshes, or at least using unique materials, with different render queues or sorting orders (accessible on all renderer components via script at runtime, though not exposed to the editor) to enforce their render order. This is messy. Using the material render queue or sorting order means it messes with how it sorts with other objects. You can do it, but I highly recommend against it.
My suggestion is, don’t do this. Keep them a single object.
I’m not saying don’t animate them separately, I’m just saying don’t break the parts up. Instead the solution here is to animate them via shader parameters. You could do this with an animator modifying material parameters directly or with custom data on a particle system.