freq = 3; amp = 1; decay = 5; // Child position overshoot n = 0; if (numKeys > 0){ n = nearestKey(time).index; if (key(n).time > time) n--; } if (n > 0){ t = time - key(n).time; amplitude = velocityAtTime(key(n).time - .001)*amp; w = freq*Math.PI*2; childovershoot = amplitude*(Math.sin(t*w)/Math.exp(decay*t)/w); }else childovershoot = [0,0]; // Parent position overshoot parentpos = thisComp.layer("Parent").transform.position; n = 0; if (parentpos.numKeys > 0){ n = parentpos.nearestKey(time).index; if (parentpos.key(n).time > time) n--; } if (n > 0){ t = time - parentpos.key(n).time; amplitude = parentpos.velocityAtTime(parentpos.key(n).time - .001)*amp; w = freq*Math.PI*2; parentovershoot = amplitude*(Math.sin(t*w)/Math.exp(decay*t)/w); }else parentovershoot = [0,0]; // RESULTS value + childovershoot + parentovershoot;

freq = 3; amp = 1; decay = 5; // Child rotation overshoot n = 0; if (numKeys > 0){ n = nearestKey(time).index; if (key(n).time > time) n--; } if (n > 0){ t = time - key(n).time; amplitude = velocityAtTime(key(n).time - .001)*amp; w = freq*Math.PI*2; childovershoot = amplitude*(Math.sin(t*w)/Math.exp(decay*t)/w); }else childovershoot = 0; value + childovershoot;