タイトル: VInterp To
SEOタイトル: UE5 BP VInterp To 完全ガイド(ベクトル補間 / Tick 接続 / カメラ追従 / 4 引数の意味)
| この記事の要点 |
|
VInterp To とは
VInterp To (Vector Interpolate To) は、Unreal Engine 5 のブループリントでベクトル値を滑らかに補間するためのノードです。「現在地」から「目標地」へ、瞬間移動ではなくイージング付きで少しずつ近づける計算を 1 行で書けます。
カメラがプレイヤーを追従する、アイテムが吸い寄せられる、UI が滑らかに動く — こうした「目標に近づくほどゆっくりになる」自然な動きが Interp To 系のノードで簡潔に実装できます。
4 つの引数
| 引数 | 型 | 意味 | 典型接続 |
|---|---|---|---|
Current | Vector | 現在のベクトル値 | 自分の現在位置 (GetActorLocation) |
Target | Vector | 到達させたい目標値 | 追従先の位置 |
Delta Time | float | フレーム間時間 (秒) | Get World Delta Seconds |
Interp Speed | float | 補間速度(大きいほど速い) | 5.0 〜 10.0 が自然 |
戻り値は1 フレーム分進めたベクトル。それを次フレームの Current として使い回すのが基本パターンです。
基本ワークフロー
Event Tick から毎フレーム呼ぶ、というのが定型パターンです。
[Event Tick]
│
├──── GetActorLocation ──→ [Current]
│ ┌─→ VInterp To ─→ [SetActorLocation]
├──── Target Location ───→ [Target]──┘
│
├──── Get World Delta Seconds ─→ [Delta Time]
│
└──── 5.0 (float) ────────────→ [Interp Speed]
Interp Speed の体感ガイド
| Speed | 体感 | 用途 |
|---|---|---|
| 1.0 | のっそり | ゆったり追従カメラ |
| 3.0 | 遅め | 遠景カメラ・ふんわり UI |
| 5.0 〜 8.0 | 自然 | キャラ追従・標準 |
| 10.0 〜 15.0 | キビキビ | FPS の照準補正・素早い反応 |
| 30.0+ | ほぼ瞬間 | ほとんど Set Location と同じ |
| 0 | 動かない | 無効 |
応用1: カメラがプレイヤーをふんわり追従
SpringArm を使わず、独立した 追従カメラ Actor でラグを演出する場合。
[Event Tick]
Current = カメラ.GetActorLocation
Target = プレイヤー.GetActorLocation + Vector(0, 0, 200) ; 少し上から
Delta Time = Get World Delta Seconds
Interp Speed= 3.0 ; ゆっくり追従
→ VInterp To
→ SetActorLocation (カメラ)
応用2: アイテムがプレイヤーに吸い寄せられる
[Event Tick] (アイテム BP)
距離 = Distance(プレイヤー, 自分)
If 距離 < 300:
Current = GetActorLocation
Target = プレイヤー.GetActorLocation
Delta Time = Get World Delta Seconds
Interp Speed= 8.0 ; 引き寄せる強さ
→ VInterp To
→ SetActorLocation
応用3: スケールアニメーション (Hover 時に拡大)
Current / Target に Scale ベクトル (1,1,1 など) を渡せば、滑らかな拡縮もこのノード 1 つで作れます。
[Event Tick]
Hovered ? Target = Vector(1.2, 1.2, 1.2)
: Target = Vector(1.0, 1.0, 1.0)
Current = GetActorScale3D
Delta Time = Get World Delta Seconds
Interp Speed= 10.0
→ VInterp To
→ SetActorScale3D
Interp To 系の仲間ノード
| ノード | 対象型 | 用途 |
|---|---|---|
VInterp To | Vector | 位置・スケール・色 (RGB) |
FInterp To | float | 透明度・体力ゲージ・1 軸の値 |
RInterp To | Rotator | カメラの向き・キャラの振り向き |
VInterp To Constant | Vector | 等速補間(イージングなし) |
FInterp To Constant | float | 等速 float 補間 |
RInterp To Constant | Rotator | 等速回転(一定の角速度) |
"Constant" 版はイージングがかからず Speed の値ぶんだけ等速で進むので、UI のローテーションなどに使います。
VInterp To と Lerp の違い
初心者がよく混同するノードが Lerp (Vector Lerp)。
| 項目 | VInterp To | Lerp |
|---|---|---|
| 引数 | Current / Target / DeltaTime / Speed | A / B / Alpha (0-1) |
| 進み方 | イージング(目標に近づくと遅くなる) | Alpha に応じた線形 |
| 毎フレーム呼ぶ? | Yes (現在値を更新) | 任意のタイミング |
| 使いどころ | 追従・スムーズな動き | 2 点間の途中値計算 |
Lerp は Alpha を自分で進行させる必要があるのに対し、VInterp To は「現在値」を「目標」に少しずつ近づける動きを 1 ノードで完結できるのが強みです。
FAQ
Q: なぜ Event Tick で呼ぶ必要?
A: 1 回だけ呼んでも 1 フレームぶんしか進まないから。毎フレーム呼んで現在値を上書きすることで連続的な動きになる。
Q: Delta Time に固定値を入れたら?
A: フレームレート依存になり PC スペックで動きが変わる。必ず Get World Delta Seconds を使う。
Q: Speed が大きすぎると?
A: ほぼ瞬間移動になり VInterp To の意味がなくなる。15 以上は SetLocation で十分。
Q: 目標に到達した判定がしたい
A: VInterp To は厳密には到達しない(漸近する)。(Target - Current).Size() < 1.0 等の閾値で判定。