【Adobe AfterEffects】《Expression》上下左右に対応バウンス
2025/07/14
![]()
テキストアニメーションで使いやすいエクスプレッションです。
X,Yの値を調整するだけで上下左右どこからでもバウンスインのアニメーションが作れます。
コードを行ごとに解説しています。
1.Expression
delay = .07;
myDelay = delay*textIndex;
t = (time - inPoint) - myDelay;
if (t >= 0){
freq =2;
amplitude = 100;
decay = 5.0;
s = amplitude*Math.cos(freq*t*2*Math.PI)/Math.exp(decay*t);
[s,s]
}else{
value
}
2.解説
delay = .07;
1文字ごとのアニメーション開始の「遅延時間」※0.07秒ずつずらす
myDelay = delay * textIndex;
textIndex は文字レイヤーで使える特殊な変数
各文字が0.07秒 × 文字番号だけ遅れて動き始める
t = (time - inPoint) - myDelay;
timeは現在の時間
inPointはレイヤーの開始時間
「この文字が動き始めてからの経過時間」を計算している
if (t >= 0){
アニメーションの開始時刻を迎えていないとき(t < 0)は何も起こさずvalueを返す t >= 0 のときだけ、アニメーションが実行される
freq = 2;
1秒間に2回の振動(バウンド)
amplitude = 100;
揺れの大きさ(跳ね幅)
100pxくらい跳ねる
decay = 5.0;
減衰率
時間が経つにつれてどれくらい早く動きが収束するか
数字が大きいほど早く静止する
s = amplitude*Math.cos(freq*t*2*Math.PI)/Math.exp(decay*t);
振動(cos)に減衰(exp:指数関数)をかけたもの
「バウンドして徐々に止まる動き」を表現し、Math.cos() で上下の振動、Math.exp() で時間による減衰をかけて、時間が経つと動かなくなる
[s, s]
XとYの両方方向に同じ量だけバウンドさせる
} else { value }
アニメーションがまだ始まっていないときは、何も変化させず元の値(value)を使う
3.チュートリアル動画
今回紹介したエクスプレッションを使ったテキストアニメーションの作り方チュートリアル動画です。
