Lerpとは?
Lerp
とは、Linear Interpolation
の略で、線形補間といった意味になります。
値AとBのの間を経過時間で線形的に補間し、その間の値を返すメソッドがUnity
にはいくつか用意されています。
// 関数のイメージ
public static float Lerp(float a, float b, float t);
引数 | 意味 |
a | 補間の開始値 |
b | 補間の終了値 |
t | 補間の進行度(0〜1の範囲) |
t=0ならaの値、t=1ならbの値を返します。
tに0.5を渡すと、aとbの丁度中間の値を返します。
tが0.0から1.0に変化する間、aからbの値を返すことになります。
float
Mathf.Lerp
は、Unity
で用意されている算術関数で、浮動小数(float型
)を線形補間するためのメソッドです。
以下の例では、0と100の中間で50が返ってきます。
時間経過で画像の透明度を変化させたい場合などに使用できます。
float result = Mathf.Lerp(0f, 100f, 0.5f);
Vector2
Vector2
構造体にもLerp
メソッドがあります。
2次元ベクトルを線形補間するために使用できます。
2D
の座標空間上を滑らかに移動させる場合に役立ちます。
Vector2 start = new Vector2(0f, 0f);
Vector2 end = new Vector2(10f, 10f);
Vector2 result = Vector2.Lerp(start, end, 0.5f)
Vector3
Vector3
構造体にもLerp
メソッドがあります。
3次元ベクトルを線形補間するために使用できます。
3D
ゲームで座標空間上を滑らかに移動させる場合に役立ちます。
Vector3 start = new Vector3(0f, 0f, 0f);
Vector3 end = new Vector3(10f, 10f, 10f);
Vector3 result = Vector3.Lerp(start, end, 0.5f)
Vector4
Vector4
構造体にもあります。
4次元ベクトルを線形補間するために使用できます。
3次元の座標情報に加えて、他の情報も含めて補間したい場合に使われることが多いです。
Vector4 start = new Vector4(0f, 0f, 0f, 0f);
Vector4 end = new Vector4(10f, 10f, 10f, 0f);
Vector4 result = Vector4.Lerp(start, end, 0.5f)
Quaternion
Quaternion
構造体にもあります。
Color
Color.Lerp
は色の線形補間するために使用できます。
時間経過で色を変化させたい場合に使用できます。
Color startColor = Color.red;
Color endColor = Color.blue;
float t = 0.3f;
Color newColor = Color.Lerp(startColor, endColor, t);
LerpUnclamped
Lerp
に渡す時間は、0.0〜1.0に限られます。
範囲外の値を渡してもその範囲に修正されます。
範囲を超えた時間を渡したい場合は、LerpUnclamped
を使用します。
以下の例では、15が返ってきます。
float result = Mathf.LerpUnclamped(0, 10, 1.5f);
まとめ
今回はLerp
メソッドについて説明しました。
Lerpは単純な線形補間用のメソッドですが、2つの値を時間経過で単純に補間したい場合に役に立ちます。
オブジェクトを2点間で移動させたり、
透明度を変化させてフェードアウトさせたり、
UI
をアニメーションさせたり、
ダメージを受けた時にゲージを減らしたり、
結構使いどころがあります。
適切に活用することで直感的で自然な動きや変化を実現できます。
まだ使ったことが無い場合は是非取り入れてみてください。