キャラクターを移動させたい時、目的地まで一瞬で飛ぶのではなく、滑らかに移動させたい。
色を変える時も、急に変えるのではなく、徐々に変化させたい。
そんな時に使うのが、Lerp(Linear Interpolation、線形補間)です。
Lerpを使えば、2つの値の間を一定の割合で滑らかに補間できます。
この記事では、Lerpとは何か、ゲーム開発でどう使うのかを、Unity実装例とともに見ていきましょう。
Lerpとは何か(ゲーム制作目線)

Lerpは、Linear Interpolationの略で、線形補間という意味です。
2つの値(スタート地点とゴール地点)の間を、指定した割合で補間する処理です。
例えば、位置1と位置2の間を、50%の割合で補間すると、ちょうど真ん中の位置が返されます。
0%ならスタート地点、100%ならゴール地点になります。
Unityでは、Mathf.LerpやVector3.Lerpなどの関数が用意されています。
これらを使うことで、数値やベクトルの補間を簡単に実現できます。
ゲーム開発では、滑らかな移動、色の変化、UIのアニメーションなど、様々な場面でLerpが活用されます。
ゲームでの具体的な使い道

Lerpがゲームでどう使われているか、具体例を確認してみましょう。
キャラクターの滑らかな移動
プレイヤーキャラクターが、ある地点から別の地点へ移動する際、Lerpを使うと滑らかに移動できます。
目的地までの距離の一定割合を、毎フレーム移動させることで、徐々に目的地に近づいていきます。
カメラの追従や、UI要素の移動でも同様の方法が使われます。
色の変化(フェードイン・フェードアウト)
画面をフェードイン・フェードアウトさせる際、色のアルファ値をLerpで変化させます。
透明(アルファ0)から不透明(アルファ1)へ、またはその逆へ、滑らかに変化させることができます。
シーンの切り替えや、ダメージを受けた時の画面効果などで活用されます。
スケールのアニメーション
オブジェクトのサイズを変化させる際、Lerpを使って滑らかに拡大・縮小できます。
UIボタンが押された時のプレスアニメーションや、アイテム取得時のエフェクトなどで使われます。
数値の補間
HPゲージの減少、経験値ゲージの増加など、数値を滑らかに変化させたい時もLerpが有効です。
急激な変化ではなく、徐々に変化させることで、視覚的に分かりやすくなります。
Lerpを使う主な場面
- 位置の滑らかな移動(キャラクター、カメラ、UI要素など)
- 色の変化(フェードイン・フェードアウト、色の遷移など)
- スケールのアニメーション(拡大・縮小エフェクト)
- 数値の補間(ゲージの増減、スコア表示など)
作り方は分かった。
でも完成まで行けない人へ
当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。
※ まずは内容を見るだけでOK
考え方・仕組みを図解イメージで説明

Lerpの仕組みは、「2点間を直線で結ぶ」というシンプルな考え方です。
基本的な計算式
Lerpの計算式は、以下の通りです。
result = start + (end - start) * t
ここで、startは開始値、endは終了値、tは補間係数(0.0〜1.0)です。
tが0ならstart、tが1ならend、tが0.5ならstartとendの中間値が返されます。
毎フレームの適用
滑らかな移動を実現するには、毎フレームLerpを適用します。
ただし、毎回同じtの値を使うと、永遠にゴールに到達しません。
代わりに、Time.deltaTimeを使った固定の移動速度で補間するか、一定の割合(例:0.1)を毎フレーム適用すれば、徐々にゴールに近づけます。
Unclamped Lerpとの違い
通常のLerpは、tが0.0〜1.0の範囲に制限されます(Clamped)。
一方、LerpUnclampedは、tが1.0を超えても外挿します。
これにより、ゴール地点を超えて移動することも可能になりますね。
⚠️ 重要なポイント
- Lerpは2つの値の間を補間する処理で、滑らかな変化を実現できる
- 毎フレーム同じtの値を使うと、ゴールに到達しないため注意が必要
- Time.deltaTimeを使った移動速度や、一定の割合を適用すれば、滑らかにゴールに到達できる
- 位置、色、スケール、数値など、あらゆる値にLerpを適用できる
Unityで実装する際の注意点(代表例)

Lerpは非常に便利ですが、使い方を誤ると「特定のパソコンだけで動きが速くなる」といったトラブルの原因になります。
ここでは、実務で使える実装例と、ハマりやすい注意点を見ていきましょう。
位置の補間(Time.deltaTimeを活用)
キャラクターを目的地へ向かって滑らかに移動させる、最も標準的な例です。
Time.deltaTimeを掛けることで、フレームレートが異なる端末でも、同じ時間で同じ距離を移動できるようになります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class SmoothMovement : MonoBehaviour { public Transform target; public float speed = 5f; void Update() { // 毎フレーム、現在位置から目標位置へ一定速度で移動 // Time.deltaTimeを掛けることで端末ごとの性能差を吸収します transform.position = Vector3.Lerp( transform.position, target.position, Time.deltaTime * speed ); } } |
色の補間(フェードインの実装)
色(Colorクラス)にもLerpは使えます。
以下の例では、不透明な状態から徐々に透明へと近づけるフェードアウト処理を記述しています。アルファ値(透明度)を0.0から1.0の間で制御するのがポイントです。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class FadeIn : MonoBehaviour { public Image fadeImage; public float fadeSpeed = 2f; private float alpha = 1f; void Update() { // アルファ値を徐々に0に近づける alpha = Mathf.Lerp(alpha, 0f, Time.deltaTime * fadeSpeed); fadeImage.color = new Color(1f, 1f, 1f, alpha); } } |
一定の割合で補間する際の「フレームレート依存」の罠
初心者の方がよく使う「tに固定値(例:0.1f)を入れる方法」には注意が必要です。
この書き方は「現在の位置から残り10%の距離を詰める」という挙動になり、滑らかな減速が得られます。
|
1 2 3 4 5 6 |
void Update() { // 毎フレーム10%ずつ目標位置に近づける(注意点あり) transform.position = Vector3.Lerp(transform.position, target.position, 0.1f); } |
この方法は、パソコンの性能によって移動速度が変わってしまいます。
- 60FPSのPC: 1秒間に60回「10%詰める」処理が行われる
- 144FPSのPC: 1秒間に144回「10%詰める」処理が行われる
結果として、高性能なモニターを使っているプレイヤーほどキャラクターが速く動くという不公平が生じます。対戦ゲームや厳密なアクションゲームでは、必ず前述の Time.deltaTime を使った計算を取り入れましょう。
この方法ではゴールに近づくほど移動量が極端に小さくなるため、完全に数値がゴールと一致しないこともあります。
厳密に重ねたい場合は、一定距離まで近づいたら直接ゴール座標を代入する処理をセットで記述します。
より高度な動き:SmoothDampとの使い分け
「もっと高級感のある、バネのようなしなやかな動きにしたい」という場合は、Unityが提供している SmoothDamp 関数も検討してみてください。
SmoothDampは、現在の「速度(Velocity)」を内部で計算し、物理的な慣性が働いているような自然な減速を実現します。
- Lerp: シンプルな補間。計算が軽く、UIの移動や色の変化に向いている。
- SmoothDamp: 速度を考慮した補間。カメラの追従や、より自然なキャラ移動に向いている。
まずはLerpを使いこなし、表現の幅を広げたい時にSmoothDampを試すのが上達の近道です。

まとめ

この記事では、Lerpについて見てきました。
重要なポイントをおさらいします。
重要なポイント:
- Lerpは2つの値の間を一定の割合で補間する処理で、滑らかな変化を実現できる
- ゲームでは、位置の移動、色の変化、スケールのアニメーション、数値の補間などに使われる
- UnityではMathf.Lerp、Vector3.Lerpなどの関数が用意されている
- 毎フレーム同じtの値を使うとゴールに到達しないため、Time.deltaTimeを使った速度や一定の割合を適用する
- Lerpを理解すれば、より自然で滑らかなゲーム表現が可能になる
Lerpは、ゲーム開発で非常に重要な技術です。
シンプルながら、様々な場面で活用できます。
滑らかな移動やアニメーションを実現する第一歩として、Lerpをしっかり理解しておくと、より高度な表現にも応用できます。
実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。
Unity入門の森では、Lerpを含む補間処理を、実際のゲーム実装とともに体系的に学べます。
ぜひチェックしてみてください。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます
Lerpの計算式が分かる|Unityで滑らかな補間移動を実現する考え方





コメント