作者:shejifuzhu人气:更新:2022-07-20 19:03:02
Ae小球回弹表达式:
e =0.7;//弹力
g =1000;//重力
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
看起来好复杂的一个表达式,没关系,只要键盘上有 c 和 v 就可以了。还是这个小球,先让它做一个落地的动效:
然后,给位置属性添加上表达式。
这样,它就落地回弹了。
表达式中的弹力和重力都是可以根据需要进行调整的。
Copyright @ 2021 SHEJIFUZHU.COM