【Unreal Engine】UE5のTimelineノード入門:扉もフェードもTickを使わずに動かす

作成: 2026-07-20

UE5のTimelineノードを図解。Float/Vector/Color/Eventの4トラック、Play・Reverse・Stopの使い分け、カーブの補間モード、Lerpと組み合わせる基本形、Timelineを置けない場所、そして自動ドアの実装まで。

扉をゆっくり開けたい。画面を1秒かけて暗転させたい。カメラを目標地点まで滑らかに寄せたい。こうした「時間をかけて値を変える」処理を、Event Tick の中で少しずつ足し算して書いてしまうことがあります。

その書き方は動きますが、開ききる位置を自分で判定する必要があり、終わったあともTickは回り続けます。UEにはこの用途専用のノードがあります。 Timeline です。この記事では、Timelineが何を出力するノードなのか、4種類のトラックと各ピンの使い分け、カーブの編集方法、Lerp と組み合わせる基本形、そして近づくと開く自動ドアの作り方までを解説します。

時間軸に沿ったカーブから値が出力され、扉が動くイメージ

この記事でわかること

  • Timelineは 時間に沿ってカーブの値を吐き出す ノードであること
  • Float / Vector / Color / Event の4トラックの使い分け
  • Play / Play from Start / Reverse / Stop の違い
  • カーブの 補間モード が手触りを決めること
  • Timelineが 置けない場所
  • 実践: 近づくと開き、離れると閉じる自動ドア

Sponsored

Timelineは時間で値を吐き出すノード

Timelineは、Blueprintの中に持てる 小さなアニメーションカーブ です。再生を始めると、時間の経過にあわせてカーブ上の値を毎フレーム出力し続けます。

横軸が時間、縦軸が値のカーブから、0.0秒で0.0、0.5秒で0.5、1.0秒で1.0が出力されることを示した図

追加するには、Actor Blueprintのイベントグラフで右クリックし、「Add Timeline...」を選びます。名前を付けると、グラフにTimelineノードが置かれ、同時に My Blueprintパネルの Variables に同じ名前の変数が作られます 。この変数はTimeline Componentへの参照で、あとで再生速度を変えるときなどに使います。

Timelineノードをダブルクリックすると、専用のカーブエディタが開きます。ここでトラックを追加し、キーを打って形を作ります。

Timelineの役割は「値を出すこと」だけです。 出た値をどう使うかは、つないだ先が決めます。 位置に使えば移動、色に使えばフェード、マテリアルのパラメータに使えば発光の点滅になります。1つのTimelineを覚えれば、そのまま全部に応用できます。

なぜTickで書かないのか

同じ動きは Event Tick でも書けます。ただし、Tickで書くと自分で管理する項目が増えます。

Event Tickで書くTimelineで書く
進行の管理経過時間を変数で持ち、自分で加算するTimelineが持つ
終了の判定「目標に届いたか」を毎フレーム比較するFinished ピンが来る
停止Tickを止める処理を自分で書く再生が終われば自動で止まる
途中で逆再生逆算する処理を追加するReverse を呼ぶだけ
動きの緩急計算式を自分で組むカーブの形で決める

Tickを避けるのは、負荷のためだけではありません。 動いていない時間にも処理が回り続ける設計を減らすため です。Timelineは再生中だけ動き、終われば自分で止まります。この考え方はTickに頼らないBlueprint設計の記事にまとめています。Timelineは、その考え方をいちばん素直に実行できる道具です。

Sponsored

4種類のトラック

カーブエディタの左上にあるボタンで、4種類のトラックを追加できます。

トラック出力される型主な用途
Float TrackFloat進行度(0→1)、透明度、音量、パラメータ全般
Vector TrackVector位置、スケール、方向を直接動かす
Color TrackLinear Colorフェード、ライトの色変化、UIの色
Event Track実行ピン「0.5秒の地点で音を鳴らす」など、特定の時刻の合図
Float・Vector・Color・Eventの4トラックが、それぞれ数値・座標・色・実行ピンを出力することを示した図

トラックは1つのTimelineに複数追加でき、追加した数だけTimelineノードの右側に出力ピンが増えます。トラック名がそのままピン名になるので、Alpha DoorOffset のように分かる名前を付けてください。

実務でいちばん使うのは Float Track です。0から1へ変化する1本のカーブを作っておき、それを後述の Lerp に流すと、位置でも色でも回転でも同じ形で扱えます。 専用のVector Trackを作るより、0→1のFloat 1本を使い回すほうが、あとから修正しやすい です。

Event Track は少し性格が違います。キーを打った時刻に実行ピンが発火するので、「扉が開ききる0.2秒前に効果音を鳴らす」といったタイミング合わせに使います。

なお、リストの5つ目に External Curve という項目があります。これはTimeline内部にカーブを持たず、外部のCurve Floatアセットを参照する形です。同じ動きを複数のBlueprintで共有したいときに使います。

入力ピンと出力ピン

Timelineノードのピンは決まっています。

Timelineノードの左側にPlay・Play from Start・Stop・Reverse・Reverse from End・Set New Time・New Time、右側にUpdate・Finished・Direction・トラック出力が並ぶノード図

左側(入力)

ピン動作
Play現在の再生位置から前方向へ再生
Play from Start時間0へ戻してから前方向へ再生
Stopその場で停止(位置は保持)
Reverse現在の再生位置から逆方向へ再生
Reverse from End終端へ移動してから逆方向へ再生
Set New TimeNew Time の値へ再生位置を移動
New Time(Float)Set New Time で使う移動先の時刻

右側(出力)

ピン動作
Update再生中、毎フレーム発火
Finished再生が終端(または逆再生で始端)に到達したときに1回だけ発火
Direction現在の再生方向(Forward / Backward)を返すEnum
各トラック名そのフレームのカーブの値

使い分けの要点は PlayPlay from Start の違い です。

  • 扉やスイッチのように 往復 させるものは PlayReverse の組み合わせ。途中で向きが変わっても、その位置から自然に戻ります
  • ヒットエフェクトのように 毎回頭から 流したいものは Play from Start 。連打しても常に最初から再生されます

Stop は再生位置をその場に保持します。もう一度 Play を呼べば続きから、Play from Start なら最初から再開します。

処理の実体は Update ピンにつなぎます。 Update は再生中だけ発火するTickだと考えてください。 再生が終われば発火は止まるので、Tickのように動かし続ける心配がありません。

Sponsored

カーブの編集と補間モード

Timelineをダブルクリックし、トラック上でShift + 左クリックするとキーが追加されます。キーを選択すると、エディタ左上の入力欄で TimeValue を数値で直接指定できます。まずは Time 0.0 / Value 0.0Time 1.0 / Value 1.0 の2つを打つのが定番です。

キーを右クリックすると、 補間モード を選べます。ここが動きの手触りを決めます。

モードカーブの形手触り
Linear直線一定速度。機械的。エレベーター、ベルトコンベア
Auto自動で滑らかな曲線始めと終わりがゆるやか。多くの場合これで良い
User手動で調整した曲線ハンドルを引っ張って狙った緩急を作る
Break前後で別々の曲線前半と後半で違う勢いにする
Constant階段状値が飛ぶ。パラパラした演出、点滅
Linear・Auto・Constantの3つのカーブ形状と、それぞれ動きがどう見えるかを対比した図

同じ0→1でも、Linearは機械が動く感じ、Autoは物が動く感じになります。 扉、カメラ、UIのポップアップはAutoにするだけで印象が変わります。逆に、常に一定速で動くべきものにAutoを使うと、止まる直前にもたつきます。

エディタ右上には Length(Timelineの長さ、既定 5.0 秒)と Use Last Keyframe? があります。Use Last Keyframe? にチェックを入れると、最後のキーの位置が自動的に終端になるので、キーを打ち直すたびにLengthを直す必要がなくなります。

その隣の Loop はチェックすると再生が繰り返され、Finished は発火しなくなります。 AutoPlay はActorが生成された瞬間から再生を始めます。

再生速度は実行中にも変えられます。Timelineの変数をグラフへドラッグし、 Set Play Rate を呼んで New Rate に倍率を渡します。2.0 で2倍速、0.5 で半分です。ドアの開閉速度をゲーム内の設定で変えたい、といったときに使います。

Lerpと組み合わせるのが基本形

Timelineの使い方でいちばん多い形が、これです。

Timelineの0→1のFloat出力がLerpのAlphaへ入り、AとBに開始値と終了値を入れてSet Relative Locationへつながる図
Timeline (Update)
  → Lerp (Vector)
      A     = ClosedLocation
      B     = OpenLocation
      Alpha = Timeline の Float 出力(0→1)
  → Set Relative Location (Target = DoorMesh)

Lerp は「AとBの間を、Alphaの割合で混ぜる」ノードです。Alphaが 0.0 ならA、1.0 ならB、0.5 ならちょうど中間を返します。 Timelineが0→1を吐き、Lerpがそれを実際の値へ翻訳する 分担になります。

裏を返すと、 Lerp は誰かがAlphaを動かさないと何も起きません 。ここではTimelineがその役をしています。目標が動き続けるもの(敵がプレイヤーを向く、砲塔が旋回する)はTimelineでは書けないので、Interp To 系のノードを使います。この使い分けは 回転と補間の基礎 で扱っています。

この形の良いところは、 Timeline側は0→1のまま触らずに、AとBを差し替えるだけで用途が変わる ことです。

Lerpの種類AとBに入れるもの動くもの
Lerp (Vector)座標位置(Set Relative Location
Lerp (Rotator)回転向き(Set Relative Rotation
Lerp (Float)数値マテリアルのパラメータ、音量
Lerp (Linear Color)ライトの色、UIの色

Lerp (Rotator) は「RLerp」という名前で検索すると見つかります。

補足: 位置を動かすとき、Set World Location ではなく Set Relative Location を使うのが要点です。Relativeなら、Actorをレベルのどこに置いても、どの向きに回転させても、同じBlueprintがそのまま動きます。

Timelineが置けない場所

Timelineには置ける場所の制約があります。ここを知らないと、必要な場所で「Add Timeline」が見つからずに止まります。

場所置けるか代わりに使うもの
Actor派生のBlueprint(イベントグラフ)置ける
関数グラフ(Function)置けないイベントグラフに置き、関数から呼ぶ
マクログラフ(Macro)置けない同上
Widget Blueprint置けないUMGの Widget Animation
Blueprint Function Library置けないCurve Floatアセット+自前の処理

関数やマクロの中に置けないのは、Timelineが 時間をまたいで状態を持ち続ける ものだからです。関数は呼ばれたその場で完結する必要があるので、内部に再生中のTimelineを抱えられません。関数の中から動かしたい場合は、イベントグラフにTimelineを置き、そこへつながるカスタムイベントを関数から呼び出します。

Widget Blueprintで同じことをしたい場合は、UMGに用意されている Widget Animation を使ってください。Timelineと同じくキーとカーブで作れて、しかもゲームがポーズ中でも再生されます(→ ポーズ機能の記事)。

Sponsored

実践:自動ドアを作る

ホラーゲームの自動ドア、SFの気密ハッチ、パズルゲームの昇降床。 「近づくと開き、離れると閉じる」は、ジャンルを問わず最初に作る仕掛け です。ここではTimeline 1つで、途中で引き返しても自然に動くドアを作ります。

完成形

ドアの手前に立つと、1秒かけて扉が上へスライドして開きます。離れると、その位置から下がって閉じます。 開ききる前に離れた場合は、途中の高さから閉じ始めます。

プレイヤーが近づくと扉が上へ開き、途中で離れると途中の高さから閉じ始めることを示した3コマの図

再現条件

Third Person テンプレート で新規プロジェクトを作り、BP_AutoDoor という Actor 派生のBlueprintを作ります。

コンポーネント構成

コンポーネント種類設定
DefaultSceneRootSceneルート
DoorMeshStatic MeshMeshに Cube を設定。Scale を (0.2, 2.0, 3.0) 、Location を (0, 0, 150)
TriggerBoxBox CollisionBox Extent を (200, 200, 200) 。Collision Presetは既定の OverlapAllDynamic のまま

変数

変数名初期値用途
ClosedLocationVector(0, 0, 150)閉じているときの DoorMesh の相対位置
OpenLocationVector(0, 0, 370)開ききったときの相対位置(220だけ上)

初期値は変数を作ったあと、詳細パネルの「Default Value」に入力します(コンパイルしないと入力欄が出ません)。

Timeline

イベントグラフで右クリックして「Add Timeline...」を選び、名前を DoorTimeline にします。ダブルクリックして開き、次のように設定します。

項目
トラックFloat Track を1つ追加し、名前を Alpha にする
キー1Time 0.0 / Value 0.0
キー2Time 1.0 / Value 1.0
両方のキーの補間モードAuto
Use Last Keyframe?オン

グラフを組む

TriggerBoxのBegin OverlapがPlay、End OverlapがReverseへ、UpdateがLerp VectorとSet Relative Locationへつながるノードグラフ図

コンポーネントリストで TriggerBox を選び、詳細パネル下部のEventsから On Component Begin OverlapOn Component End Overlap を追加します。

On Component Begin Overlap (TriggerBox)
  → DoorTimeline : Play

On Component End Overlap (TriggerBox)
  → DoorTimeline : Reverse

DoorTimeline (Update)
  → Lerp (Vector)
      A     = ClosedLocation   (0, 0, 150)
      B     = OpenLocation     (0, 0, 370)
      Alpha = Alpha(DoorTimelineのFloat出力)
  → Set Relative Location
      Target        = DoorMesh
      New Location  = Lerp の戻り値

PlayReverse を使い分けているところが要点です。 Play from Start にすると、開いている途中で離れたときに いったん最初へ飛んでから閉じる ため、扉が瞬間移動します。

作ったBlueprintをレベルにドラッグして配置してください。

確認する

Playして扉に近づきます。 扉が1秒かけて220ユニット上へ滑らかに動き、体が通れる高さになれば成功 です。離れると同じ1秒で元の高さへ戻ります。

次に、 開き始めて0.3秒ほどで後ろへ下がってみてください。 扉は上まで行かず、その途中の高さから下がり始めます。これが Reverse の効果です。

さらに、キー2つの補間モードを Linear に変えて比べてみてください。同じ1秒でも、止まる瞬間の印象がはっきり変わります。

  • 扉がまったく動かないOn Component Begin OverlapTriggerBox ではなく DoorMesh に付いている。イベント名の下に対象コンポーネント名が出るので確認する
  • 扉が瞬間移動するUpdate ではなく FinishedSet Relative Location をつないでいる
  • 扉が変な場所へ飛ぶSet World Location を使っている、または ClosedLocation の初期値が DoorMesh の実際の位置と違う
  • 開いたまま閉じないOn Component End Overlap を接続していない、または Play from Start を使っている
  • プレイヤーが扉にめり込むDoorMesh のCollision Presetが NoCollision になっている

ポイントは2つです。

  • Timelineは0→1に固定し、値の翻訳はLerpに任せる: この分担にしておくと、開く高さを変えたいときに触るのは OpenLocation だけで済みます。Timelineのカーブは「動きの緩急」だけを担当させてください
  • 往復するものは PlayReverse で組む: Play from Start は毎回頭から流したい演出専用です。扉・スイッチ・引き出しのように状態が行き来するものは、現在位置から反転できる Play / Reverse の組が正解です

同じ形のまま、Lerp (Linear Color) に差し替えればフェード、Set Scalar Parameter Value につなげばマテリアルの発光になります。扉の演出をもう一段作り込むなら、Blueprintのコンポーネント再利用で、開閉処理そのものを他のActorへ持ち回せる形にできます。

Sponsored

うまく動かないときのチェック

症状見るところ
Timelineが追加できないActor派生のBlueprintか。Widget BlueprintやFunction Libraryには置けません
「Add Timeline...」が出ない関数グラフやマクログラフを開いている。イベントグラフに切り替える
値が0のまま出てこないトラックにキーが1つしかない。最低2つ必要です
途中で止まるLengthが最後のキーより短い。Use Last Keyframe? をオンにする
Finished が来ないLoop がオンになっている。ループ中は発火しません
ポーズ中も動いてほしいTimelineはポーズで停止します。UI用途ならWidget Animationへ
スロー演出中に速度が変わるIgnore Time Dilation をオンにすると、Set Global Time Dilation の影響を受けなくなります

値がどう出ているか分からないときは、Update から Print String へトラック出力をつないでください。0→1が流れていれば、問題はTimelineの先にあります。デバッグ出力の使い方はPrint Stringの記事にあります。

おまけ:先に知っておくと良いこと

  • 1つのBlueprintに複数のTimelineを置ける: 扉の開閉とランプの点滅を別々のTimelineで持てます。名前を DoorTimeline LampTimeline のように役割で付けておくと、あとで見て分かります
  • Curve Floatアセットで形を共有する: 同じイージングを複数のBlueprintで使うなら、Content Browserで Miscellaneous > Curve > Curve Float を作り、TimelineのトラックからExternal Curveとして参照します。1箇所直せば全部に反映されます
  • 長い演出はSequencerへ: Timelineが得意なのは、1つのActorの中で完結する短い動きです。カメラ・キャラクター・音を同時に動かすカットシーンは、Timelineを何本も並べるより、Sequencer を使うほうが管理できます
  • Set New Time で途中から始められる: 「すでに半分開いた状態でレベルを開始したい」ときは、Set New Time0.5 を渡してから Play します
  • 変数はBlueprint内に閉じ込める: ClosedLocation OpenLocation のような値をローカル変数と通常の変数のどちらにするかは、寿命で決まります(→ ローカル変数の使い分け
  • 他のActorへ完了を知らせたい場合: Finished からEvent Dispatcherを呼ぶと、扉が開ききったタイミングを外部へ通知できます(→ Event Dispatcherの記事

まとめ

  • Timelineは 時間に沿ってカーブの値を吐き出す ノード。Actor派生のBlueprintのイベントグラフに追加する
  • トラックは Float / Vector / Color / Event の4種類。実務では 0→1のFloat 1本 を使い回すのが扱いやすい
  • 往復するものは PlayReverse 、毎回頭から流すものは Play from Start
  • 処理は Update につなぐ。再生中だけ発火するので、Tickのように回り続けない
  • カーブの補間モードが手触りを決める 。LinearとAutoを切り替えて比べる
  • Lerp へ流すのが基本形 。Timelineは0→1のまま、AとBを差し替えて用途を変える

いま Event Tick の中で少しずつ値を足している処理はありませんか。そこがそのままTimelineに置き換えられる場所です。