22.

UE5 BP VInterp To 完全ガイド(ベクトル補間 / Tick 接続 / カメラ追従 / 4 引数の意味)

編集
この記事の要点
  • VInterp To はベクトル値を現在地から目標地へ滑らかに補間するブループリント (BP) ノード
  • 4 引数: Current(現在値)/ Target(目標値)/ Delta Time(フレーム時間)/ Interp Speed(速度)
  • 基本パターン: Event Tick で毎フレーム呼ぶ。Delta Time には Get World Delta Seconds を接続
  • Interp Speed: 小さいほどゆっくり、5〜10 が体感的に自然。0 だと動かない
  • 応用: カメラ追従 / アイテム吸引 / スムーズな振り向き / スケール変化アニメーション
  • 仲間ノード: FInterp To(float)/ RInterp To(Rotator)/ VInterp To Constant(等速)

VInterp To とは

VInterp To (Vector Interpolate To) は、Unreal Engine 5 のブループリントでベクトル値を滑らかに補間するためのノードです。「現在地」から「目標地」へ、瞬間移動ではなくイージング付きで少しずつ近づける計算を 1 行で書けます。

カメラがプレイヤーを追従する、アイテムが吸い寄せられる、UI が滑らかに動く — こうした「目標に近づくほどゆっくりになる」自然な動きが Interp To 系のノードで簡潔に実装できます。

4 つの引数

引数意味典型接続
CurrentVector現在のベクトル値自分の現在位置 (GetActorLocation)
TargetVector到達させたい目標値追従先の位置
Delta Timefloatフレーム間時間 (秒)Get World Delta Seconds
Interp Speedfloat補間速度(大きいほど速い)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 ToVector位置・スケール・色 (RGB)
FInterp Tofloat透明度・体力ゲージ・1 軸の値
RInterp ToRotatorカメラの向き・キャラの振り向き
VInterp To ConstantVector等速補間(イージングなし)
FInterp To Constantfloat等速 float 補間
RInterp To ConstantRotator等速回転(一定の角速度)

"Constant" 版はイージングがかからず Speed の値ぶんだけ等速で進むので、UI のローテーションなどに使います。

VInterp To と Lerp の違い

初心者がよく混同するノードが Lerp (Vector Lerp)

項目VInterp ToLerp
引数Current / Target / DeltaTime / SpeedA / 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 等の閾値で判定。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. Event BeginPlay
  2. Event ActorBeginOverlap
  3. Event Tick
  4. on component begin overlap
  5. On Component Hit
  6. CameraBoom(Spring Arm)
  7. Get Player Character
  8. Nav Mesh Bounds Volume
  9. AI MoveTo
  10. Pawn
  11. Create Render Target 2D
  12. Take High Res Screenshotノード
  13. Sphere Reflection Capture
  14. Event Tickノード
  15. ウィジェットのキャンバスパネル
  16. DefaultSceneRoot
  17. FloatingPawnMovement
  18. Set World Rotation
  19. Event Any Damage
  20. Set World Rotation
  21. VInterp To
  22. Get Socket Transform

最近更新/作成されたページ