ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
この記事の要点
- RInterp To は現在の Rotator から目標 Rotator へ時間ベースで滑らかに補間するノード
- 入力: Current / Target / Delta Time / Interp Speed。出力は補間 1 フレーム分の Rotator
- 通常は Event Tick 上で毎フレーム呼び、結果を Set Actor Rotation や Set World Rotation に流す
- Interp Speed = 0 は「補間しない=即 Target」、値が大きいほど追いつくのが速い(指数減衰)
- 位置補間は VInterp To、Float は FInterp To、Quat 版は QInterp To
1RInterp To とは
RInterp To(R は Rotator)は UE5 の Blueprint / C++ で使える回転補間ノードです。現在の回転と目標回転を渡すと、Delta Time × Interp Speed に応じて 1 フレーム分だけ目標に近づいた Rotator を返します。Tick 上で繰り返し呼ぶことで、滑らかに回転が変化していきます。
2入出力
| ピン | 型 | 説明 |
|---|---|---|
| Current | Rotator | 現在の回転(多くは Get Actor Rotation 等で取得) |
| Target | Rotator | 向かわせたい目標回転 |
| Delta Time | float | フレーム間時間。通常 Get World Delta Seconds または Tick の Delta |
| Interp Speed | float | 補間速度。大きいほど早く Target に到達。0 で補間スキップ(Target をそのまま返す) |
| Return Value | Rotator | 1 フレーム分補間した Rotator |
3基本的な使い方(Blueprint)
カメラやキャラクターの頭をターゲット方向に滑らかに向ける、典型的な構成は次の通りです。
- Event Tick から開始
- 現在の Actor Rotation を取得(
Get Actor Rotation) - 目標 Rotation を計算(例:
Find Look At Rotation) - RInterp To に Current / Target / Delta / Speed を入力
- 結果を
Set Actor Rotationへ流す
4使用例:カメラを敵のほうへ滑らかに向ける
// C++ 版(UKismetMathLibrary::RInterpTo)
#include "Kismet/KismetMathLibrary.h"
void AMyPlayer::Tick(float DeltaSeconds)
{
Super::Tick(DeltaSeconds);
if (!TargetEnemy) return;
const FRotator Current = GetActorRotation();
const FRotator Target = UKismetMathLibrary::FindLookAtRotation(
GetActorLocation(),
TargetEnemy->GetActorLocation());
const FRotator Smoothed = UKismetMathLibrary::RInterpTo(
Current, Target, DeltaSeconds, /*InterpSpeed=*/5.0f);
SetActorRotation(Smoothed);
}
5Interp Speed の感覚値
| Speed | 挙動 | 用途 |
|---|---|---|
| 0 | 補間しない(即 Target) | テスト用 / 補間オフのトグル |
| 1〜2 | ゆっくり、約 1 秒で 60〜80% 接近 | 映像演出、シネマティック |
| 3〜5 | 標準的な追従 | カメラ追従、AI の視線 |
| 8〜15 | 素早い反応、ほぼ即追従 | FPS の照準、ロックオン |
| 30 以上 | 1 フレームでほぼ Target | 事実上「即」と同じ |
RInterp To は指数減衰(exponential damping)的に Target へ近づきます。Speed が一定でも残り角度が小さくなるほど 1 フレームあたりの変化量も小さくなるので、自然な減速が得られます。
6関連する補間ノード
| ノード | 用途 |
|---|---|
| RInterp To | Rotator の補間(本記事) |
| VInterp To | Vector(位置)の補間 |
| FInterp To | Float の補間 |
| QInterp To | Quaternion の補間(ジンバルロック対策) |
| RInterp To Constant | 「角度/秒」固定の等速補間(指数ではない) |
| Lerp (Rotator) | 0〜1 の Alpha 指定で線形補間 |
RInterp To と RInterp To Constant の違い
- RInterp To: 残り角度が大きいほど速く、近づくほど遅い(イーズアウト風)
- RInterp To Constant: 一定角速度。バリスティックな動きに向く
7注意点
- 毎フレーム呼ぶ必要がある — 1 回呼ぶだけでは 1 フレーム分しか進まない。Tick または Timer で繰り返す
- Yaw が ±180 をまたぐとき — RInterp To は短い側の経路を選ぶが、ノーマライズが必要な場面では
Normalized Delta Rotatorで前処理 - ジンバルロックが気になる場合 — Pitch が ±90 付近で挙動が崩れることがある。Quaternion 版
QInterp Toを検討 - ポーズ中の Delta Time — ポーズ時に Tick が止まると補間も止まる。ポーズ時も動かしたいなら Tickable Object の
bTickEvenWhenPausedを立てる
8FAQ
Q: Interp Speed の単位は?
A: 無次元の係数で、内部的には Alpha = clamp(DeltaTime * InterpSpeed, 0, 1) として線形補間に渡しています。「Speed 秒で到達」ではない点に注意。
Q: Target に完全に到達するの?
A: 指数減衰なので数学的には漸近ですが、UE 内部で「近い場合は Target をそのまま返す」しきい値処理があるため、実用上は到達します。
Q: 即座に Target を向けたい
A: Interp To を経由せず Set Actor Rotation に直接 Target を流すか、Interp Speed = 0 を渡してください。
9FInterp To / VInterp To との比較
UE5 には Rotator 以外にも同型の Interp To ノードが揃っており、引数は同じ「Current / Target / Delta Time / Interp Speed」構成です。型だけが違います。
| ノード | 戻り型 | 典型用途 |
|---|---|---|
FInterp To | float | 体力バーの追従、ズーム値の補間、移動速度の加減速 |
VInterp To | Vector | 位置の追従、カメラのオフセット移動、フォーカス点 |
RInterp To | Rotator | 本記事。回転の追従 |
QInterp To | Quaternion | ジンバルロックを避けたい回転補間 |
CInterp To | LinearColor | 色の変化(フェード、ダメージ点滅など) |
10実装の中身(参考)
UKismetMathLibrary::RInterpTo の実装は概ね次の形になっています。残り角度に対する補間係数を Delta Time × InterpSpeed で取り、しきい値より小さければ Target をそのまま返します。
FRotator URotator::RInterpTo(const FRotator& Current, const FRotator& Target,
float DeltaTime, float InterpSpeed)
{
if (InterpSpeed <= 0.f) return Target;
const FRotator Delta = (Target - Current).GetNormalized();
if (Delta.IsNearlyZero()) return Target;
const FRotator DeltaMove = Delta * FMath::Clamp(DeltaTime * InterpSpeed, 0.f, 1.f);
return (Current + DeltaMove).GetNormalized();
}
11関連
- プロジェクトを多言語化する方法
- Blueprintで「Cast To」を使い、複数のクラスに対応する方法
- ブループリントで現在日時を取得する方法
- Set Actor Rotation / Set World Rotation / Get World Delta Seconds — 併用ノード
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
同階層のページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- Scratch 作品の公開方法 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?