That's an interesting idea and something I've used before, for 3d. I wonder if it might give some issues for certain looped animations and if it would always play nice at runtime.
I did some testing on the constraint and the results were ok animation wise. However at runtime we run into some problems so it's unlikely we will add timeOffset.
The good news is that it's not very hard to get what you're after with a few simple steps.
- Create a single bone which has the entire length of the tail.
- Disable
Inherit Rotation
on the bone.
- Click
Split
and make sure Nested
is enabled. Choose the amount of bones you want, for example, 10.
- In animate mode select all bones and key their rotation, I went with 45, 315, 45.
- select the bones in order so they appear in order in the dopesheet.
- enable
Offset
and offset each bone at an increment of 5 frames. So 5,10,15,20 etc.
Here's what I ended up with by doing the above.
Loading Image
Note that in some cases you might want to keep rotation inheritance and instead use transform constraints. I've included a project file that contains both.
wavyMotion.spine