ゲーム数学を「使える力」に変えよう!ゲーム講座PDF無料プレゼント中>>

Lerpの計算式が分かる|Unityで滑らかな補間移動を実現する考え方

ゲーム開発に必要な数学の基礎まとめ|まずここから

Lerpで滑らかな移動を実装したいけど、計算式がどうなっているのか分からない。

UnityのVector3.Lerpを使うだけでいいのか、それとも手動で計算する必要があるのか。

そんな疑問を抱えていませんか。

Lerpの計算式は、「開始値 + (終了値 – 開始値) × 補間係数」というシンプルな式です。

この記事では、Lerpの計算式の仕組みと、Unityでの実装方法を見ていきましょう。

【ゲームの作り方講座もプレゼント中!】

Lerpの計算式とは何か(ゲーム制作目線)

Lerpの計算式の基本

Lerp(ラープ)は「Linear Interpolation」の略称で、日本語では「線形補間」と呼ばれます。

ゲーム制作においてLerpの計算式は、2つの値の間を直線的につなぎ、その途中の値を割り出すために使われます。

Unityでは内部でどのような計算が行われているのか、2つの数式からその仕組みを紐解いていきましょう。

1. 変化量から考える計算式

まずは、プログラミングで一般的に使われる、直感的な数式です。

result = a + (b - a) × t

ここで、各変数は以下の意味を持ちます。

  • a:開始値(スタート地点)
  • b:終了値(ゴール地点)
  • t:補間係数(0.0〜1.0の「割合」)

この式は、「スタート地点(a)から、ゴールまでの距離(b – a)の、tパーセント分だけ進む」という考え方に基づいています。

たとえば、tが0.5ならちょうど中間、tが1ならゴールに到達するというわけですね。

2. 重み付けで考える「数学的に美しい」計算式

もう一歩踏み込んで、数学的な「内分点」の考え方で表すと、以下のような式になります。

数学ブログや論文などでは、こちらの形式で書かれることも多い「格調高い」表現です。

$$result = (1 – t)a + tb$$

この式は、「aとbをどのくらいの比率で混ぜるか」という重み付けを表しています。

  • $t=0$ のとき: $1 \times a + 0 \times b = a$ (100%スタート地点)
  • $t=0.1$ のとき: $0.9 \times a + 0.1 \times b$ (aを9割、bを1割混ぜる)
  • $t=1$ のとき: $0 \times a + 1 \times b = b$ (100%ゴール地点)

実は、計算機(コンピュータ)の世界では、こちらの式のほうが「tが1のときに、浮動小数点の誤差に邪魔されず確実にゴール(b)へ到達しやすい」という隠れたメリットもあります。

Unityでの自動計算

Unityでは、Vector3.LerpMathf.Lerpなどの関数が標準で用意されており、これらの計算をすべて自動で行ってくれます。

「わざわざ手動で計算しなくてもいいのでは?」と思うかもしれませんが、計算式の仕組み(特に割合tの意味)を理解しておくことで、後述する「滑らかな加速・減速」や「独自カスタマイズ」が格段に実装しやすくなります。

ゲームでの具体的な使い道

Lerpの計算式のゲームでの使用例

Lerpの計算式が、ゲームでどう活用されているか確認してみましょう。

位置の補間計算

キャラクターの位置を滑らかに移動させる際、Lerpの計算式を使って、現在位置から目標位置までの間を補間します。

毎フレーム、補間係数を更新すれば、徐々に目標位置に近づいていきます。

カメラの追従や、UI要素の移動でも同様の計算が行われます。

色の補間計算

画面のフェードイン・フェードアウトでは、アルファ値を0から1(または1から0)へ補間します。

Lerpの計算式を使えば、滑らかな色の変化を実現できますね。

回転の補間計算

オブジェクトの回転を滑らかに変化させる際も、Lerpの計算式が使われます。

ただし、回転の補間にはSlerp(球面線形補間)を使う方が自然な場合が多いです。

数値の補間計算

HPゲージや経験値ゲージの増減でも、Lerpの計算式が活用されます。

現在の値を目標値へ、一定の割合で補間すれば、滑らかな変化を実現できます。

Lerpの計算式が使われる場面

  • 位置の補間(移動、カメラの追従など)
  • 色の補間(フェードイン・フェードアウト、色の遷移など)
  • スケールの補間(拡大・縮小アニメーション)
  • 数値の補間(ゲージの増減、スコア表示など)

作り方は分かった。
でも完成まで行けない人へ

当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。

買い切り 全講座 今後追加も無料
永久会員チケットを見てみる

※ まずは内容を見るだけでOK

考え方・仕組みを図解イメージで説明

Lerpの計算式の仕組み

Lerpの計算式は、「2点間を直線で結ぶ」という考え方で理解できます。

基本的な計算の流れ

例えば、開始値が0、終了値が10の場合を考えましょう。

補間係数tが0.3の時:
– result = 0 + (10 – 0) × 0.3
– result = 0 + 10 × 0.3
– result = 3

補間係数tが0.7の時:
– result = 0 + (10 – 0) × 0.7
– result = 0 + 10 × 0.7
– result = 7

このように、補間係数に応じて、開始値と終了値の間の値を計算できます。

ベクトルでの計算

3D空間での位置の補間では、X、Y、Zの各成分を独立して補間します。

Vector3.Lerpは、内部的に各成分に対してLerpの計算を行っています。

毎フレームの補間係数の更新

滑らかな移動を実現するには、毎フレーム補間係数を更新します。

Time.deltaTimeを使った固定速度で移動する場合と、一定の割合を適用する場合があります。

どちらを使うかは、目的に応じて選択します。

⚠️ 重要なポイント

  • Lerpの計算式は「a + (b – a) × t」で表される
  • 補間係数tは0.0〜1.0の範囲で、0なら開始値、1なら終了値が返される
  • 毎フレーム同じtの値を使うと、ゴールに到達しないため注意が必要
  • ベクトルの補間では、各成分を独立して補間する

Unityで実装する際の注意点(代表例)

UnityでのLerpの計算式の実装

UnityでLerpを使いこなすためには、関数の使い方だけでなく、目的の動きに合わせた「t(補間係数)」の制御を知っておくことが不可欠です。

UnityのLerp関数の使い方

Unityには、数値用の Mathf.Lerp やベクトル用の Vector3.Lerp など、型に合わせた関数が用意されています。

これらを使うことで、複雑な成分計算を一行で記述できます。

手動で計算する場合

自作のクラスや特定の最適化が必要な場合、計算式を直接コードに書くこともあります。

先ほど解説した「変化量」を使った基本式をそのまま適用します。

第3引数「t」による挙動の違い:一定速度 vs 減速

ここが最も重要なポイントです。

Lerpで移動を実装する場合、「第1引数(現在地)を毎フレーム更新するかどうか」で動きが劇的に変わります。

1. 一定の速度で移動させる(線形補間)

スタート地点を固定し、経過時間を累積して $t$ に渡すパターンです。

等速でパキッとした動きになります。

2. 滑らかに減速して近づける(イージング)

第1引数に「現在の自分の位置」を渡し続けるパターンです。

目標に近づくほど移動距離が短くなるため、吸い込まれるような滑らかな減速(指数減速)になります。

Unclamped Lerpとの違い

通常のLerpは、もし $t$ に 1.5 などの範囲外の数値が入っても、自動的に 0〜1 の間に制限(クランプ)してくれます。

対して、制限をかけずに「突き抜けた値」が欲しい場合は LerpUnclamped を使用します。

博士
博士
Lerpは「ただの平均計算」ですが、第1引数に自分自身の位置を入れるテクニック(パターン2)を使うだけで、一気にゲームらしい滑らかな動きになります。数式の意味を知っていると、こうした応用が直感的にできるようになりますよ!

まとめ

Lerpの計算式のまとめ

この記事では、Lerpの計算式について見てきました。

重要なポイントをおさらいします。

重要なポイント:

  • Lerpの計算式は「a + (b – a) × t」で、2つの値の間を直線的に補間する
  • 補間係数tは0.0〜1.0の範囲で、0なら開始値、1なら終了値が返される
  • UnityではVector3.LerpやMathf.Lerpなどの関数が用意されている
  • 毎フレーム同じtの値を使うとゴールに到達しないため、Time.deltaTimeを使った速度や一定の割合を適用する
  • 計算式を理解すれば、より柔軟で効果的な実装が可能になる

Lerpの計算式は、ゲーム開発で頻繁に使われる重要な技術です。

シンプルな式ながら、様々な場面で活用できます。

Unityの関数を使う場合も、計算式を理解しておくことで、より効果的に使えるようになりますね。

実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。

Unity入門の森では、Lerpを含む補間処理を、実際のゲーム実装とともに体系的に学べます。

ぜひチェックしてみてください。

ゲーム制作を“理解しながら”始めたい方へ
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます

【ゲームの作り方講座もプレゼント中!】

コメント

タイトルとURLをコピーしました