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

LerpはLinear Interpolation(線形補間)の略称で、2つの値の間を滑らかに補間する関数です。
例えば、位置Aから位置Bへ、色Aから色Bへ、数値Aから数値Bへと、段階的に変化させる際に使用します。
これにより、カクカクした動きではなく、なめらかな動きや変化を実現できるんです。
基本的な概念
Lerpは、2つの値(開始値と終了値)の間を、指定した割合(0.0〜1.0)で補間します。
0.0なら開始値、1.0なら終了値、0.5なら中間値といった具合です。
数学的には、以下のような式で表されます。
Lerp(a, b, t) = a + (b - a) × t
この式により、開始値aから終了値bへ、tの割合だけ進んだ値を取得できます。
なぜLerpが必要なのか
ゲームでは、オブジェクトを瞬時に移動させるのではなく、滑らかに移動させたい場面が多くあります。
カメラの追従、UIのアニメーション、エフェクトの変化など、様々な場面でLerpが活躍するんです。
瞬時の変化では不自然に見えるが、Lerpを使えば自然な動きを実現できます。
- 2つの値の間を滑らかに補間する
- 0.0から1.0の割合で進行度を指定できる
- 数値、Vector3、Colorなど様々な型で使用可能
- フレームレートに依存しない滑らかな動きを実現できる
UnityでのLerpの実装方法

Unityでは、Mathf.LerpやVector3.Lerpなど、様々な型に対応したLerp関数が用意されています。
実際の使用例を見ていきましょう。
数値の補間(Mathf.Lerp)
数値(float)の補間には、Mathf.Lerpを使用します。
|
1 2 3 4 5 6 7 |
float startValue = 0f; float endValue = 10f; float t = 0.5f; float result = Mathf.Lerp(startValue, endValue, t); // result は 5.0 になる |
この例では、0から10の間を、0.5(50%)で補間しているため、結果は5.0になります。
Vector3の補間(Vector3.Lerp)
位置の補間には、Vector3.Lerpを使用します。
|
1 2 3 4 5 6 7 |
Vector3 startPos = new Vector3(0, 0, 0); Vector3 endPos = new Vector3(10, 10, 10); float t = 0.3f; Vector3 currentPos = Vector3.Lerp(startPos, endPos, t); // currentPos は (3, 3, 3) になる |
これにより、2つの位置の間を滑らかに補間できます。
時間ベースのLerp
フレームレートに依存しない滑らかな動きを実現するには、時間ベースのLerpを使用します。
|
1 2 3 4 5 6 7 8 |
float speed = 2.0f; void Update() { float t = Time.deltaTime * speed; transform.position = Vector3.Lerp(transform.position, targetPosition, t); } |
Time.deltaTimeを使うことで、フレームレートに関係なく一定の速度で補間できます。
- Time.deltaTimeを使わないと、フレームレートによって速度が変わる
- tの値は0.0から1.0の範囲が推奨される
- 毎フレームLerpを呼ぶ場合、最終値に到達しない場合がある
Lerpの実践的な使用例

Lerpを使った実践的な例を見ていきましょう。
オブジェクトの滑らかな移動
オブジェクトを目標位置へ滑らかに移動させる例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class SmoothMovement : MonoBehaviour { public Transform target; public float speed = 2.0f; void Update() { if (target != null) { float t = Time.deltaTime * speed; transform.position = Vector3.Lerp(transform.position, target.position, t); } } } |
このスクリプトをオブジェクトにアタッチすれば、targetの位置へ滑らかに移動します。
色の滑らかな変化
色を滑らかに変化させる場合もLerpが使えます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public class ColorChanger : MonoBehaviour { public Color startColor = Color.red; public Color endColor = Color.blue; public float duration = 2.0f; private float timer = 0f; private Renderer renderer; void Start() { renderer = GetComponent(); } void Update() { timer += Time.deltaTime; float t = timer / duration; Color currentColor = Color.Lerp(startColor, endColor, t); renderer.material.color = currentColor; } } |
これにより、指定した時間で色が滑らかに変化します。
カメラの滑らかな追従
カメラをプレイヤーに滑らかに追従させる例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class SmoothCameraFollow : MonoBehaviour { public Transform target; public float followSpeed = 2.0f; void LateUpdate() { if (target != null) { float t = Time.deltaTime * followSpeed; Vector3 targetPos = target.position; targetPos.y = transform.position.y; // Y軸は固定 transform.position = Vector3.Lerp(transform.position, targetPos, t); } } } |
LateUpdateを使うことで、プレイヤーの移動後にカメラが追従します。

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

※この順番を守らずに作り始めると、だいたい後で全部作り直すことになります。
- STEP1開始値と終了値を決定
補間したい開始値と終了値を決定します。位置、色、数値など、目的に応じて適切な型を選択しましょう。
- STEP2補間の進行度を計算
Time.deltaTimeを使って、フレームレートに依存しない進行度を計算します。speedパラメータで補間の速度を調整可能。
- STEP3Lerp関数を呼び出し
適切なLerp関数(Mathf.Lerp、Vector3.Lerpなど)を呼び出します。進行度tは0.0から1.0の範囲に収めるように注意。
- STEP4結果を適用
Lerpの結果をオブジェクトに適用します。Transform.positionやMaterial.colorなど、目的に応じて適用先を選択。
- STEP5動作確認と調整
実際に動かして、速度や動きを確認します。必要に応じてspeedパラメータを調整して、好みの動きにしましょう。
よくある問題と解決方法

Lerpを使う際によくある問題と、その解決方法を紹介します。
最終値に到達しない
毎フレームLerpを呼び出す場合、理論上は最終値に到達しません。
これは、Lerpが現在位置から目標位置へ向かって移動するため、移動量が徐々に小さくなるからです。
解決方法は、十分に近づいたら最終値を設定するか、LerpUnclampedを使うこと。
|
1 2 3 4 5 6 7 8 9 10 11 |
float distance = Vector3.Distance(transform.position, targetPosition); if (distance < 0.01f) { transform.position = targetPosition; } else { float t = Time.deltaTime * speed; transform.position = Vector3.Lerp(transform.position, targetPosition, t); } |
フレームレートで速度が変わる
Time.deltaTimeを使わないと、フレームレートによって速度が変わってしまいます。
必ずTime.deltaTimeを掛けるようにしましょう。
|
1 2 3 4 5 6 |
// ✅ 正しい実装 float t = Time.deltaTime * speed; // ❌ 間違った実装 float t = 0.1f; // フレームレートで速度が変わる |
動きが不自然になる
速度が速すぎたり、遅すぎたりすると、動きが不自然に見えます。
適切なspeed値を見つけるには、試行錯誤が必要。
一般的には、1.0から5.0の範囲が使いやすいです。
- 最終値に到達しない → 距離チェックを追加するか、LerpUnclampedを使う
- 速度が変わる → Time.deltaTimeを必ず使う
- 動きが不自然 → speedパラメータを調整する
- 補間が逆方向 → tの値が1.0を超えていないか確認
LerpとSlerpの違い

Lerpと似た関数にSlerp(Spherical Linear Interpolation)があります。
それぞれの特徴と使い分けを理解しておきましょう。
Lerpの特徴
Lerpは線形補間なので、最短距離で直線的に補間します。
位置の補間には最適ですが、回転の補間には不向きです。
Slerpの特徴
Slerpは球面線形補間なので、球面上を滑らかに補間します。
回転(Quaternion)の補間には、Slerpを使うのが一般的です。
使い分けのポイント
位置や色の補間にはLerp、回転の補間にはSlerpを使いましょう。
|
1 2 3 4 5 6 |
// 位置の補間 → Lerp transform.position = Vector3.Lerp(startPos, endPos, t); // 回転の補間 → Slerp transform.rotation = Quaternion.Slerp(startRot, endRot, t); |
Lerpの応用テクニック

基本的なLerpを理解した後は、応用的な使い方も覚えていきましょう。
イージング関数との組み合わせ
Lerpのt値に、イージング関数を適用することで、より自然な動きを実現できます。
|
1 2 3 4 5 6 7 8 |
float EaseInOut(float t) { return t * t * (3f - 2f * t); } float easedT = EaseInOut(t); transform.position = Vector3.Lerp(startPos, endPos, easedT); |
これにより、加速と減速のある滑らかな動きになります。
複数の値の同時補間
位置、回転、スケールなど、複数の値を同時に補間することも可能です。
|
1 2 3 4 5 6 7 8 9 |
void Update() { float t = Time.deltaTime * speed; transform.position = Vector3.Lerp(transform.position, targetPosition, t); transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, t); transform.localScale = Vector3.Lerp(transform.localScale, targetScale, t); } |
これにより、複数の要素を同時に滑らかに変化させられます。
Lerpの学習を深めるには

Lerpの基礎を理解した後は、さらに深く学んでいくことが大切です。
Unity入門の森では、ゲーム開発に必要な数学とアニメーションの知識を体系的に学べる環境が整っています。
特に、永久会員チケットでは、Lerpだけでなく、アニメーション、物理演算など、関連する知識も幅広くカバーしています。
また、2Dアクションゲーム講座では、実際にゲームを作りながら、Lerpの実践的な使い方を身につけられます。
補間の基礎から応用まで、実際のコードと紐付けて学べるので、理解が深まりやすいはずです。
- Lerpとは何か、基本的な概念と必要性
- UnityでのLerpの実装方法
- 実践的な使用例(移動、色の変化、カメラ追従など)
- よくある問題と解決方法
- LerpとSlerpの違いと使い分け
記事を読んで「作ってみたい!」と思ったら!人気ゲームを題材にした講座で実力をつけよう
知識を読むだけで終わらせるのはもったいない。実際に手を動かしてゲームを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は、2つの値の間を滑らかに補間する関数で、ゲーム開発において非常に重要なツールです。
なめらかな移動、色の変化、カメラの追従など、様々な場面で活用できます。
「Lerpって難しそう💧」と感じる方もいるかもしれませんが、基本的な使い方を理解すれば、様々な場面で活用できるようになります。
まずは簡単な移動から始めて、徐々に応用的な使い方を覚えていきましょう。
- Lerpは2つの値の間を滑らかに補間する関数
- 0.0から1.0の割合で進行度を指定できる
- Time.deltaTimeを使ってフレームレートに依存しない動きを実現する
- 位置や色の補間にはLerp、回転の補間にはSlerpを使う
- 最終値に到達しない問題は、距離チェックやLerpUnclampedで解決できる
まずは簡単な移動から始めて、徐々に応用的な使い方に挑戦していきましょう。
Unity入門の森では、Lerpの基礎から応用まで、実践的な知識を体系的に学べる環境が整っています。
疑問があれば、ぜひ活用してみてください。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。





コメント