Lerpを使う際に、計算式の意味を理解しておくと、より効果的に活用できます。
「Lerpの計算式ってどういう意味?」
「パラメータをどう調整すればいい?」
「なぜ滑らかに動くの?」
そんな疑問を抱えている方に向けて、Lerp計算式の数学的な背景から実践的な使い方まで、詳しく解説します。
\読むだけで終わらせない!実際にゲームを作って実力をつけよう/
トレンド×入門に最適
Unity ノンフィールドRPG
+スレスパ風JRPG講座
Unity6対応・スマホ化対応の最新カリキュラム。今もっとも人気のデッキ構築型ゲームをJRPGと組み合わせて実装。初心者が最初に選ぶ一本として最適です。
王道アクションに挑戦
Unity 2Dアクションゲーム
の作り方講座(ロックマン風)
ロックマン風の本格横スクロールACTをスマホ化・広告実装まで対応。7ステージ+ラスボスという市販ゲームに近い本格構成で、リリースまで見据えて作れます。
3D入門に最適
ゼルダ風3Dアクションゲーム
の作り方講座
ゼルダの伝説・モンハン・原神のような3Dアクションをスマホ対応で作れる入門講座。初心者でも全16回でしっかり3D開発の基礎を習得できます。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
Lerp計算式の基礎

Lerpの計算式は、以下のように表されます。
Lerp(a, b, t) = a + (b - a) × t
この式で、aは開始値、bは終了値、tは補間の進行度(0.0〜1.0)を表します。
数学的には、2点間を線形に補間する単純な式ですが、ゲーム開発では非常に強力なツールになります。
計算式の意味
計算式を分解すると、以下のような意味になります。
まず、(b – a)で開始値から終了値までの差分を計算します。
次に、(b – a) × tで、その差分のt倍を計算します。
最後に、a + (b – a) × tで、開始値に差分のt倍を加えることで、補間された値を求めます。
tの値による変化
tの値によって、補間結果がどう変わるかを見てみましょう。
- t = 0.0 → a + (b – a) × 0 = a(開始値)
- t = 0.5 → a + (b – a) × 0.5 = (a + b) / 2(中間値)
- t = 1.0 → a + (b – a) × 1 = b(終了値)
tが0.0なら開始値、1.0なら終了値、0.5なら中間値になります。
- 開始値aと終了値bの間を線形に補間する
- tの値は0.0から1.0の範囲が推奨される
- 計算は非常にシンプルで高速
- 様々な型(float、Vector3、Colorなど)で使用可能
UnityでのLerp計算式の実装

Unityでは、様々な型に対応したLerp関数が用意されています。
実際の実装方法を見ていきましょう。
Mathf.Lerpの実装
数値の補間には、Mathf.Lerpを使用します。
|
1 2 3 4 5 6 7 |
float startValue = 0f; float endValue = 100f; float t = 0.3f; float result = Mathf.Lerp(startValue, endValue, t); // result = 0 + (100 - 0) × 0.3 = 30 |
この例では、0から100の間を、0.3(30%)で補間しているため、結果は30になります。
Vector3.Lerpの実装
位置の補間には、Vector3.Lerpを使用します。
|
1 2 3 4 5 6 7 |
Vector3 startPos = new Vector3(0, 0, 0); Vector3 endPos = new Vector3(10, 20, 30); float t = 0.5f; Vector3 result = Vector3.Lerp(startPos, endPos, t); // result = (5, 10, 15) |
Vector3.Lerpは、各成分(x、y、z)に対して個別にLerp計算を行います。
時間ベースのtの計算
フレームレートに依存しない滑らかな動きを実現するには、時間ベースでtを計算します。
|
1 2 3 4 5 6 7 8 |
public float speed = 2.0f; void Update() { float t = Time.deltaTime * speed; transform.position = Vector3.Lerp(transform.position, targetPosition, t); } |
Time.deltaTimeは、前フレームからの経過時間を表します。
speedを掛けることで、補間の速度を調整できます。
Lerp計算式のパラメータ調整

Lerp計算式のパラメータを適切に調整することで、好みの動きを実現できます。
speedパラメータの調整
speedパラメータは、補間の速度を制御します。
値が大きいほど速く補間され、小さいほど遅く補間されます。
|
1 2 3 4 5 6 7 8 |
public float speed = 2.0f; // デフォルト値 // 速く補間したい場合 speed = 5.0f; // 遅く補間したい場合 speed = 0.5f; |
一般的には、1.0から5.0の範囲が使いやすいです。
距離ベースのtの計算
固定の速度で補間したい場合、距離ベースでtを計算する方法もあります。
|
1 2 3 4 5 6 |
float distance = Vector3.Distance(transform.position, targetPosition); float maxDistance = 10f; float t = Mathf.Clamp01(distance / maxDistance); transform.position = Vector3.Lerp(startPosition, targetPosition, t); |
これにより、距離に応じて補間の速度を調整できます。
- speedが大きすぎると、動きが不自然になる
- speedが小さすぎると、目的値に到達しない
- Time.deltaTimeを必ず使って、フレームレートに依存しないようにする
- tの値は0.0から1.0の範囲に収める
Lerp計算式の実装手順

※この順番を守らずに作り始めると、だいたい後で全部作り直すことになります。
- STEP1開始値と終了値を決定
補間したい開始値(a)と終了値(b)を決定します。位置、色、数値など、目的に応じて適切な型を選択しましょう。
- STEP2進行度tを計算
Time.deltaTimeとspeedを使って、進行度tを計算します。時間ベースの計算で、フレームレートに依存しない動きを実現。
- STEP3Lerp計算を実行
適切なLerp関数を呼び出して、補間値を計算します。Mathf.Lerp、Vector3.Lerpなど、型に応じた関数を使用。
- STEP4結果を適用
計算結果をオブジェクトに適用します。Transform.positionやMaterial.colorなど、目的に応じて適用先を選択。
- STEP5パラメータの調整
実際に動かして、speedなどのパラメータを調整します。試行錯誤して、好みの動きを見つけましょう。
実践的な使用例

Lerp計算式を使った実践的な例を見ていきましょう。
スムーズなカメラ追従
カメラをプレイヤーに滑らかに追従させる例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class SmoothCameraFollow : MonoBehaviour { public Transform target; public float followSpeed = 2.0f; public Vector3 offset = new Vector3(0, 5, -10); void LateUpdate() { if (target != null) { Vector3 targetPosition = target.position + offset; float t = Time.deltaTime * followSpeed; transform.position = Vector3.Lerp(transform.position, targetPosition, t); transform.LookAt(target); } } } |
このスクリプトにより、カメラがプレイヤーを滑らかに追従します。
UIの滑らかなアニメーション
UI要素を滑らかに表示・非表示する例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
public class UIFade : MonoBehaviour { public CanvasGroup canvasGroup; public float fadeSpeed = 2.0f; private float targetAlpha = 1f; void Update() { float t = Time.deltaTime * fadeSpeed; canvasGroup.alpha = Mathf.Lerp(canvasGroup.alpha, targetAlpha, t); } public void Show() { targetAlpha = 1f; } public void Hide() { targetAlpha = 0f; } } |
これにより、UI要素が滑らかにフェードイン・フェードアウトします。
色の滑らかな変化
色を滑らかに変化させる例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
public class ColorTransition : MonoBehaviour { public Color startColor = Color.red; public Color endColor = Color.blue; public float duration = 3.0f; private float timer = 0f; private Renderer renderer; void Start() { renderer = GetComponent(); } void Update() { timer += Time.deltaTime; float t = timer / duration; t = Mathf.Clamp01(t); Color currentColor = Color.Lerp(startColor, endColor, t); renderer.material.color = currentColor; } } |
指定した時間で色が滑らかに変化します。

まずは簡単な移動から始めて、徐々に応用的な使い方を覚えていきましょう。
LerpUnclampedとの違い

Unityには、LerpUnclampedという関数もあります。
通常のLerpとの違いを理解しておきましょう。
通常のLerp
通常のLerpは、tの値を0.0から1.0の範囲に制限(Clamp)します。
tが0.0未満なら開始値、1.0超過なら終了値として扱います。
LerpUnclamped
LerpUnclampedは、tの値を制限しません。
tが1.0を超えると、終了値を超えた値を返します。
例えば、t = 1.5の場合、開始値と終了値の中間ではなく、終了値をさらに進んだ値を返します。
使い分けのポイント
通常はLerpを使い、終了値を超えた補間が必要な場合のみLerpUnclampedを使います。
|
1 2 3 4 5 6 |
// 通常の補間 → Lerp float result = Mathf.Lerp(0f, 100f, 0.5f); // 50 // 範囲外の補間が必要な場合 → LerpUnclamped float result2 = Mathf.LerpUnclamped(0f, 100f, 1.5f); // 150(終了値を超える) |
よくある問題と解決方法

Lerp計算式を使う際によくある問題と、その解決方法を紹介します。
最終値に到達しない
毎フレームLerpを呼び出す場合、理論上は最終値に到達しません。
これは、Lerpが現在位置から目標位置へ向かって移動するため、移動量が徐々に小さくなるからです。
解決方法は、十分に近づいたら最終値を設定すること。
|
1 2 3 4 5 6 |
float distance = Vector3.Distance(transform.position, targetPosition); if (distance < 0.01f) { transform.position = targetPosition; } |
補間が逆方向に進む
tの値が1.0を超えたり、負の値になったりすると、予期しない動きになる場合があります。
tの値をMathf.Clamp01で制限しましょう。
|
1 2 |
t = Mathf.Clamp01(t); // 0.0から1.0の範囲に制限 |
速度がフレームレートで変わる
Time.deltaTimeを使わないと、フレームレートによって速度が変わってしまいます。
必ずTime.deltaTimeを掛けるようにしましょう。
- 最終値に到達しない → 距離チェックを追加する
- 補間が逆方向 → tの値をClamp01で制限する
- 速度が変わる → Time.deltaTimeを必ず使う
- 動きが不自然 → speedパラメータを調整する
Lerp計算式の学習を深めるには

Lerp計算式の基礎を理解した後は、さらに深く学んでいくことが大切です。
Unity入門の森では、ゲーム開発に必要な数学とアニメーションの知識を体系的に学べる環境が整っています。
特に、永久会員チケットでは、補間計算だけでなく、アニメーション、物理演算など、関連する知識も幅広くカバーしています。
また、2Dアクションゲーム講座では、実際にゲームを作りながら、Lerp計算式の実践的な使い方を身につけられます。
補間計算の基礎から応用まで、実際のコードと紐付けて学べるので、理解が深まりやすいはずです。
- Lerp計算式の数学的な背景と意味
- Unityでの実装方法
- パラメータの調整方法
- 実践的な使用例
- よくある問題と解決方法
記事を読んで「作ってみたい!」と思ったら!人気ゲームを題材にした講座で実力をつけよう
知識を読むだけで終わらせるのはもったいない。実際に手を動かしてゲームを1本完成させることで、理解が一気に深まります。人気タイトルをモデルにした講座で、ゲーム開発の第一歩を踏み出しましょう。
Unity ノンフィールドRPG+スレスパ風JRPG講座【Unity6対応!トレンドのデッキ構築×JRPGをスマホ向けに作れる!】

- Unity6対応・スマホ化対応で最新環境のゲーム開発が学べる
- Slay the Spire風のデッキ構築システム×JRPGの組み合わせを実装
- 初心者でも取り組みやすい丁寧な解説構成
- ノンフィールドRPGとデッキ構築JRPGの2つを合わせて学ぶのがおすすめ
Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座は、今もっともトレンドのデッキ構築型ゲームシステムをJRPGと組み合わせて実装する方法を学べる講座です。
Unity6対応・スマホ化対応の最新カリキュラムで、コラムやTIPSで読んで「なるほど」と思った知識を、実際に動くゲームとして形にする体験ができます。
「Slay the Spireみたいなゲームを自分でも作ってみたい!」という人の最初の一歩として最適な講座です。
Unity6対応・スマホ化対応の最新カリキュラム
トレンドのデッキ構築×JRPGを最速で実装しよう
→ スレスパ風デッキ構築JRPG講座を見てみる
スマホ対応の最新環境で、ゲーム開発の第一歩を踏み出そう!
Unity 2Dアクションゲームの作り方講座(ロックマン風)【全16回!スマホ化・広告実装まで対応した本格横スクロールACTを作れる!】

- ロックマン・マリオ・カービィのような横スクロールACTをゼロから開発
- 7ステージ+ラスボスステージの市販ゲームに近い本格的なゲーム設計
- スマホ化・AdMob広告実装まで対応してリリースまで見据えた構成
- 敵AI15体・多彩なマップギミック・武器システムを完全実装
- 完全オリジナルゲームをアセット不使用で素材提供付きで制作
Unity 2Dアクションゲームの作り方講座(ロックマン風)は、ロックマン・スーパーマリオ・星のカービィのような2D横スクロールアクションゲームを開発できるようになる本格的な講座です。
TIPSやコラムで学んだ当たり判定・物理挙動・敵AIの知識を、実際のゲームコードとして実装する体験が全16回に凝縮されています。スマホ化・広告実装まで対応しているため、作って終わりではなくリリースまで見据えた実践スキルが身につきます。
「読んで理解した知識を、動くゲームとして形にしたい」という人に強くおすすめの一本です。
スマホ化・広告実装まで対応した本格横スクロールACT
ロックマン風の2Dアクションゲームをリリースまで作り上げよう
→ 2Dアクションゲームの作り方講座を見てみる
広告収益まで視野に入れた実践スキルを今すぐ手に入れよう!
ゼルダ風3Dアクションゲームの作り方講座【全16回!初心者でも3Dアクションがスマホ対応で作れる!】

- ゼルダの伝説・モンハン・原神のような3Dアクションをゼロから開発
- 初心者でも取り組みやすい丁寧な解説構成
- スマホ化対応で実機で動かせるゲームが完成
- アセットを使った実践的なゲーム開発手法が身につく
- 画像・動画・全ソースコード公開の充実したサポート
ゼルダ風3Dアクションゲームの作り方講座は、ゼルダの伝説・モンハン・原神のような本格的な3Dアクションゲームを作りたい人におすすめの入門講座です。
コラム・TIPSで「3Dゲームはなんとなく難しそう」と感じていた人でも、全16回の丁寧な解説で確実に完成まで到達できます。スマホ化対応で実機で動かせるため、作った達成感がひときわ大きい講座です。
「3Dゲームの仕組みを理解した次は、実際に自分で作ってみたい」という人の最初の一歩として最適です。
初心者でも3Dアクションがスマホ対応で完成する
ゼルダ風3Dアクションゲームで3D開発の第一歩を踏み出そう
→ ゼルダ風3Dアクションゲームの作り方講座を見てみる
3D開発の壁を一気に突破!スマホで動くオリジナルゲームを完成させよう!
まとめ

この記事では、Lerp計算式の使い方について解説しました。
Lerpの計算式「a + (b – a) × t」は、シンプルながら非常に強力なツールです。
なめらかな移動、色の変化、UIアニメーションなど、様々な場面で活用できます。
「計算式って難しそう💧」と感じる方もいるかもしれませんが、基本的な公式を理解すれば様々な場面で活用できるようになります。
まずは簡単な移動から始めて、徐々に応用的な使い方を覚えていきましょう。
- Lerpの計算式は「a + (b – a) × t」で表される
- tの値は0.0から1.0の範囲が推奨される
- Time.deltaTimeを使ってフレームレートに依存しない動きを実現する
- speedパラメータで補間の速度を調整できる
- 最終値に到達しない問題は、距離チェックで解決できる
まずは簡単な移動から始めて、徐々に応用的な使い方に挑戦していきましょう。
Unity入門の森では、Lerp計算式の基礎から応用まで、実践的な知識を体系的に学べる環境が整っています。
疑問があれば、ぜひ活用してみてください。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。





コメント