1.運(yùn)動回彈 Keyframe Overshoot:
freq?=?3;
decay?=?5;
n?=?0;
if?(numKeys?>?0){
n?=?nearestKey(time).index;
if?(key(n).time?>?time)?n--;
}
if?(n?>?0){
t?=?time?-?key(n).time;
amp?=?velocityAtTime(key(n).time?-?.001);
w?=?freq*Math.PI*2;
value?+?amp*(Math.sin(t*w)/Math.exp(decay*t)/w);
}else
value
2.物體下綴重力回彈 Keyframe Bounce Back:
e?=?.7;
g?=?5000;
nMax?=?9;
n?=?0;
if?(numKeys?>?0){
n?=?nearestKey(time).index;
if?(key(n).time?>?time)?n--;
}
if?(n?>?0){
t?=?time?-?key(n).time;
v?=?-velocityAtTime(key(n).time?-?.001)*e;
vl?=?length(v);
if?(value?instanceof?Array){
vu?=?(vl?>?0)???normalize(v)?:?[0,0,0];
}else{
vu?=?(v?<?0)???-1?:?1;
}
tCur?=?0;
segDur?=?2*vl/g;
tNext?=?segDur;
nb?=?1;?//?number?of?bounces
while?(tNext?<?t?&&?nb?<=?nMax){
vl?*=?e;
segDur?*=?e;
tCur?=?tNext;
tNext?+=?segDur;
nb++
}
if(nb?<=?nMax){
delta?=?t?-?tCur;
value?+? vu*delta*(vl?-?g*delta/2);
}else{
value
}
}else? value
3.循環(huán)表達(dá)式
loopOut(type="cycle",numkeyframes=0)
Math.sin(time*5)*100, ? ? ?//這個(gè)表示每秒循環(huán)5次,變化的值為100
4.抖動表達(dá)式
函數(shù):
- wiggle(freq, amp, octaves = 1, amp_mult = .5, t = time)
參數(shù):
- freq 頻率
- amp 振幅
- octaves 振幅幅度
- amp_mult 頻率倍頻
- t 持續(xù)時(shí)間
說明:
頻率和振幅是必須具備的參數(shù)其他選填寫
例如wiggle(50,100)