Amazonで商品を見るセール会場へ

After Effects│valueAtTimeで時間をずらして動かすエクスプレッション|追いかける・遅れて動く

valueAtTime は、プロパティの「指定した時間の値」を取り出すエクスプレッションです。

今より少し前の値を使えば、別のレイヤーの動きを遅れて追いかける動きが作れます。

  • 基本:先頭のレイヤーの位置.valueAtTime(time - 0.2)
  • 複製するだけで順番に遅れる:index を使って1つ上のレイヤーを追いかける
  • 最初の値を使う:valueAtTime(0)
  • キーフレームも他の式もなく、値を固定したプロパティでは時間をずらしても変わらない

この記事は、Adobe公式の「Expression language reference」の説明(2026年10月3日に公式資料を確認)にもとづいています。

2026年10月13日と15日に、Windows 11 Pro上のAfter Effects 26.5.0で、主な式の動きを確かめました。

確かめた条件と結果は、それぞれの節に書いています。

目次

valueAtTimeの書き方

valueAtTime(t)

t は秒で指定します。

time はいまの時間なので、time - 0.2 と書くと「0.2秒前の値」になります。

スポンサーリンク

別のレイヤーを遅れて追いかける

  1. 先頭で動かすレイヤーに、位置のキーフレームで動きを付ける(名前は「先頭」)
  2. 追いかけるレイヤーの「位置」に次の式を書く
var leader = thisComp.layer("先頭");
var delay = 0.2; // 遅らせる秒数
leader.transform.position.valueAtTime(time - delay);

追いかけるレイヤーは、先頭のレイヤーが0.2秒前にいた場所にいつもいます。

この式の貼付先は追従側の「位置」です。回転や不透明度へ使う場合は、参照元の transform.position も対応するプロパティに変更します。先頭自身には貼らず、同じ親・次元のレイヤーで試します。

位置をずらして並べる

同じ場所に重なると1つに見えるので、少しずらしたいときは足し算をします。

var leader = thisComp.layer("先頭");
var pos = leader.transform.position.valueAtTime(time - 0.2);
pos.length == 3 ? [pos[0], pos[1] + 80, pos[2]] : [pos[0], pos[1] + 80];

横を変えず、下に80ピクセルずらします。参照元が3DならZ値をそのまま返します。貼付先も参照元と同じ2D/3Dにし、「次元に分割」したX位置・Y位置には配列を返すこの式を貼りません。

位置に、0.4秒遅れて先行レイヤーを追う式を入れた画面です。

式は「delay=0.4;」と「thisComp.layer('Leader18709').transform.position.valueAtTime(time-delay)+[0,260];」でした。

After Effectsの位置エクスプレッションにvalueAtTime(time-delay)を設定し、0.4秒遅れて追従するレイヤーを表示した画面
2026-10-13撮影。Adobe After Effects 26.5、Windows 11 Pro (10.0.26200)。実機画面、原寸保存。

0:20の時点では、下のオレンジの四角が、上の青い四角より左にありました。

After Effectsの1秒15フレームで、0.4秒遅れた追従レイヤーが先行レイヤーと同じ横位置に到達したプレビュー
2026-10-13撮影。Adobe After Effects 26.5、Windows 11 Pro (10.0.26200)。実機画面、原寸保存。

1:15の時点では、2つの四角の横位置がそろいました。

0.4秒遅れて、同じ位置に到達しています。

0.2秒遅れと80ピクセルずらす式を試した結果(2026年10月15日)

2026年10月15日に、Windows 11 Pro上のAfter Effects 26.5.0で、上の0.2秒遅れる式と、80ピクセルずらす式を試しました。

コンポジションは1920×1080・30fpsで、先頭と2つの追従側は、同じ静止した親(位置0)につないでいます。

先頭の位置は、0秒で [200, 540]、1秒で [1200, 540] の直線のキーフレームです。

式の文字列は記事のものと同じで、入力欄へ手で打ち込む操作は確認に含めていません。

1秒の時点で、0.2秒遅れる側は [1000, 540]、80ピクセルずらす側は [1000, 620] でした。

After Effectsで先頭の青い四角の左に、0.2秒遅れるオレンジの四角と、その80ピクセル下の緑の四角が並び、タイムラインに1秒の時点の位置の値が出ている画面
2026-10-15撮影。Adobe After Effects 26.5.0 (Build 89)、Windows 11 Pro (10.0.26200)。1秒の時点で、先頭(青)は[1200, 540]、0.2秒遅れる側(オレンジ、Delay02)は[1000, 540]、Yに80を足す側(緑、Delay02Offset80)は[1000, 620]になった実機画面(ウィンドウのタイトルバーのみ切り取り)。

0秒と0.1秒の時点では、0.2秒前が最初のキーフレームより前になるため、どちらもXは最初の値の200のままでした。

3Dレイヤーでも同じ式を試し、先頭のZを0秒で50、1秒で150にしました。

1秒の時点で、2つの追従側のZはどちらも約130で、0.2秒前(0.8秒)の先頭のZと同じでした。

80ピクセルずらす式でも、変わったのはYだけで、Zはそのまま残りました。

親が動く場合や、2Dと3Dが混ざった組み合わせは、確認していません。

複製するだけで順番に遅れさせる

たくさんのレイヤーを、少しずつ遅れて動かしたいときの書き方です。

var result = value;
if (index > 1) {
  var above = thisComp.layer(index - 1);
  result = above.transform.position.valueAtTime(time - 0.1);
}
result;

index は、そのレイヤーがタイムラインの上から何番目かを表す数です。

index - 1 は「1つ上のレイヤー」なので、それぞれが1つ上のレイヤーを0.1秒遅れで追いかけます。

  1. いちばん上に、キーフレームで動かす先頭のレイヤーを置く
  2. その下に、上の式を書いたレイヤーを1つ作る
  3. 式を書いたレイヤーを Ctrl+D(Macは Command+D)で複製していく

複製するたびに、1つ前のレイヤーからさらに0.1秒遅れて動きます。

2026年10月15日に、1920×1080・30fpsの別のコンポジションで、この式を書いた追従レイヤーを1枚作り、タイムラインで選んで Ctrl+D を2回押しました。

先頭(1番目)は0秒 [200, 540] から1秒 [1200, 540] へ動く直線のキーフレームで、4枚とも同じ静止した親につないでいます。

1秒の時点のXは、上から1200、1100、1000、900で、Yはすべて540でした。

After Effectsのタイムラインで、先頭と3枚の追従レイヤーの位置が1秒の時点で1200、1100、1000、900と並び、ビューアの四角が少しずつずれて並んだ画面
2026-10-15撮影。Adobe After Effects 26.5.0 (Build 89)、Windows 11 Pro (10.0.26200)。indexで1つ上のレイヤーを0.1秒遅れで追う式を書いた追従レイヤー(ChainFollower)をCtrl+Dで2回複製し、1秒の時点の位置を表示した実機画面。Xは上から1200、1100、1000、900(ウィンドウのタイトルバーのみ切り取り)。

複製した2枚も同じ式のままで、それぞれが1つ上のレイヤーを0.1秒遅れで追っていました。

追従レイヤーの直上にほかのレイヤーを挿入したり並べ替えたりすると、index – 1が指す相手も変わります。

2枚目の追従レイヤーを3番目に移すと、追う相手が先頭から1つ上の追従レイヤーに変わり、1秒の時点のXは1100から1000に変わりました。

この並べ替えはタイムラインのドラッグでは行っていないため、ドラッグで並べ替える操作は確認に含めていません。

指定時刻の値を使う

valueAtTime(0)

0秒のときの値を返すので、動きの途中でも「最初の位置」を基準にできます。

レイヤーが始まった時間の値を使いたいときは、inPoint を使います。

valueAtTime(inPoint)

2026年10月15日に、スライダー制御のエフェクトで、この2つの式を確かめました。

スライダーには0秒で0、1秒で100のキーフレームを付け、レイヤーの開始(inPoint)を0.5秒にしています。

0.5秒から2.5秒までの6つの時刻で調べると、valueAtTime(0) はいつも0、valueAtTime(inPoint) はいつも50でした。

valueAtTime(0) は、レイヤーが始まる0.5秒より前の、0秒のキーフレームの値を返しました。

キーフレームの値をランダムに選ぶ

random(4) は整数のキー番号ではなく、0以上4未満の時刻を返します。途中の時刻ではキーフレーム間の補間値を取得する場合があります。キーに保存した値を1つ選んで固定するには、次の式を使います。

var result = value;
if (numKeys > 0) {
  seedRandom(index, true);
  var n = Math.min(numKeys, Math.floor(random(numKeys)) + 1);
  result = key(n).value;
}
result;

2026年10月15日に、0秒・1秒・2秒・3秒に10・20・30・40のキーフレームを付けたスライダーで、この式を試しました。

0.5秒から2.5秒までの6つの時刻で、値はいつも同じキーの値(このレイヤーでは10)でした。

どのキーが選ばれるかはレイヤーやプロパティによって変わるため、10になるとは限りません。

キーフレームのないスライダーでは、元の値(42)のまま変わりませんでした。

比べるために valueAtTime(random(4)) を試すと、1秒の時点で22.27になるなど、時刻ごとにキーの値ではない途中の値になりました。

うまくいかないとき

  • 遅れない:先頭のレイヤーの動きがキーフレームで付いているかを見る(動いていないと同じ値が返る)
  • エラーになる:レイヤー名が式と同じかを見る。index - 1 のときは、いちばん上のレイヤーに式を書いていないかを見る
  • 最初だけ位置がおかしい:遅らせた時間が最初のキーフレームより前になる間は、最初のキーフレームの値のまま止まる

ほかのプロパティに合わせて値を変える書き方は、After Effectsのlinear・easeで値を変換するエクスプレッションで紹介しています。

追従とキー選択の練習

1920×1080の練習コンポジションに、同じ親を持つ2Dレイヤー「先頭」と追従側を作ります。

先頭の位置は0秒 [200, 540]、1秒 [1200, 540] の直線キーです。

追従側だけに0.2秒遅れる式を貼ると、1秒で [1000, 540]、80ピクセル下げる式では [1000, 620] になります。

2026年10月15日に試した結果も、この値と同じでした(上の「位置をずらして並べる」の節)。

2026年10月13日に、After Effectsの画面で、0.4秒遅れて追う動きを確認しました。

2026年10月15日には、0.2秒遅れと80ピクセルずらす式、複製で順番に遅れる式、valueAtTime(0) と valueAtTime(inPoint)、キーの値を選ぶ式を確かめました。

上のレイヤーを追う式は、indexが1なら元の値を返します。

複製後にタイムラインの順番を変えると参照先も変わります。

1つ上のレイヤーと次元・親を揃えてから確認します。

キー選択の例では seedRandom(index, true) により時間を変えても選択を固定します。

レイヤー番号を変えると選ぶキーも変わる場合があります。

戻すときは追従側の式を無効にします。

原本の先頭キーを削除しないでください。

式の有無を比較するため、追従前の位置とレイヤーの並びも保存しておきます。

練習用エクスプレッション6本をダウンロードできます。

READMEの貼付先を確認し、1つずつ練習用プロパティに使います。

ZIPに入っているファイルそのものを、After Effectsで読み込む確認は含めていません。

上のレイヤーを1秒遅れで追う例と旧記事の画面

「上のレイヤーと同じ動きをN秒遅れで追従する」記事の内容を、このページに統合しました。上の複製手順で遅延を1秒にする場合は、追従側の「位置」に次の式を入力します。先頭はキーフレームで動かし、追従側と同じ親・2D/3Dの条件に揃えてください。

var result = value;
if (index > 1) {
  result = thisComp.layer(index - 1).transform.position.valueAtTime(time - 1);
}
result;

追従側をCtrl+D(MacはCommand+D)で複製すると、それぞれが1つ上のレイヤーより1秒ずつ遅れます。並べ替えると参照先も変わります。最初のキーフレームより前を参照する間は、最初のキーの値になります。

上のレイヤーと同じ動きを時間差で追従させるエクスプレッションを適用した動作例。
統合元の記事に掲載されていた画面です。現在のAEで撮影・再検証した画面ではありません。
上のレイヤーの位置を1秒遅れで追従させるエクスプレッションの入力画面。
統合元の記事に掲載されていた画面です。現在のAEで撮影・再検証した画面ではありません。

統合元の参考出典:ワークスコーポレーション掲載ページ。今回の式は先頭レイヤーのガードを加えた記述です。AE本体の動作確認は、このページの検証範囲の記載を参照してください。

スポンサーリンク

まとめ

  • valueAtTime(t) で、指定した秒の値を取り出せる
  • time - 0.2 と書くと、0.2秒前の値で遅れて追いかける
  • index - 1 を使うと、複製するだけで順番に遅れる
  • valueAtTime(0) や valueAtTime(inPoint) で最初の値を使える

参考:Adobe「Expression language reference」(2026年10月3日に公式資料を確認)。

2026年10月15日に、0.2秒遅れ・80ピクセルずらす式・複製による連鎖・指定時刻の値・キーの選択をWindows 11 ProのAfter Effects 26.5.0の画面で確かめ、該当の節に追記しました(Adobe公式の説明も同じ日に確認)。

よくある質問:After EffectsのvalueAtTimeで遅れて追従させるとき

valueAtTimeは、何をするエクスプレッションですか?

プロパティの「指定した時間の値」を取り出します。時間は秒で指定します。timeはいまの時間なので、time - 0.2と書くと「0.2秒前の値」になります。今より少し前の値を使えば、別のレイヤーの動きを遅れて追いかける動きが作れます。

追いかけるレイヤーの式は、どこに貼りますか?

追従側の「位置」に貼ります。先頭自身には貼りません。回転や不透明度へ使う場合は、参照元のtransform.positionも対応するプロパティに変更します。同じ親・次元のレイヤーで試してください。

追いかけるレイヤーが先頭と重なって1つに見えるときは?

足し算で少しずらします。記事の例では、横を変えず、下に80ピクセルずらします。貼付先も参照元と同じ2D/3Dにし、「次元に分割」したX位置・Y位置には配列を返すこの式を貼らないでください。

複製するだけで、順番に遅れさせるには?

indexを使って1つ上のレイヤーを追いかける式を、追従側の「位置」に入力します。追従側をCtrl+D(MacはCommand+D)で複製すると、それぞれが1つ上のレイヤーより遅れます。タイムラインで並べ替えると参照先も変わります。

まったく遅れて動かないときは?

先頭のレイヤーの動きがキーフレームで付いているかを見てください。キーフレームも他の式もなく、値を固定したプロパティでは、時間をずらしても変わりません。

エラーになるときは?

レイヤー名が式と同じかを確認します。index - 1の式のときは、いちばん上のレイヤーに式を書いていないかも確認してください。

最初だけ位置がおかしいのはなぜですか?

遅らせた時間が最初のキーフレームより前になる間は、最初のキーフレームの値のまま止まります。

この記事の式は、実機で確認済みですか?

この記事は、Adobe公式の「Expression language reference」の説明(2026年10月3日に公式資料を確認)にもとづいています。2026年10月13日に0.4秒遅れて追う式を、15日に0.2秒遅れる式、80ピクセルずらす式(2Dと3D)、複製で順番に遅れる式、valueAtTime(0) と valueAtTime(inPoint)、キーの値を選ぶ式を、Windows 11 Pro上のAfter Effects 26.5.0で確かめました。どれも同じ静止した親を持つレイヤーでの結果で、親が動く場合、2Dと3Dの混在、1秒遅れの例、旧版のAfter Effectsは確認していません。「上のレイヤーを1秒遅れで追う例と旧記事の画面」の節の画面は統合元の記事のもので、現在のAEで撮影・再検証した画面ではありません。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

After Effectsのおすすめ書籍

必要なPCスペック

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次