• 一分钟搞定复杂动效AE表达式-05小球回弹表达式

    作者: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 就可以了。还是这个小球,先让它做一个落地的动效:

    1.gif


    然后,给位置属性添加上表达式。

    2.gif


    这样,它就落地回弹了。

    3.gif


    表达式中的弹力和重力都是可以根据需要进行调整的。


    标签:表达式回弹小球搞定复杂Ae