Instead of a counter of how many items you have in your queue, you should only move them towards the next part when they are further than a certain distance. Removed the animator for testing purpose. They try now to catch up to you as well in case you do not move or move faster than they can. You want as well to only dequeue the position once you reached it (...
I commented on every line explaining what it does. As for improving it all depends on what you want to do with this movement code and is a much broader questions.
public class move : MonoBehaviour
public Rigidbody2D rg2d; // This creates a reference to a RigidBody2d type
I'm looking into this as well. I only have a solution that works for beziers that are somewhat horizontal, the closer they get to vertical, the less it works.
I'm essentially converting the local up vector into an angle, interpolating that, and turning it back into an up vector.
Conversion from normal to angle:
You use the vector along the bezier (p[t + 1] - ...