Unity、Color.Lerp関数

導入

Color.Lerp 関数は Unity エンジンの静的関数で、2 つの色値の間を線形補間して色のグラデーション効果を実現するために使用されます


方法

Color.Lerp 関数は Unity エンジンの静的関数で、2 つの色値の間で線形補間を実行して色のグラデーション効果を実現するために使用されます。関数は次のように定義されます。

public static Color Lerp(Color a, Color b, float t);

このうち、a と b は 2 つのカラー値であり、t は補間係数であり、a と b の間の現在のカラー値の比率を示します。

関数の戻り値は、色のグラデーション効果を実現するために使用される補間係数に従って計算された色の値です。

この関数の実現原理は、補間係数 t に従って a と b の現在の色値の比率を計算し、その比率に従って a と b の加重平均を実行して現在の色値を取得することです。

具体的な実装方法は、次のように a と b の RGB 値とアルファ値をそれぞれ補間することです。

float r = Mathf.Lerp(a.r, b.r, t);
float g = Mathf.Lerp(a.g, b.g, t);
float b = Mathf.Lerp(a.b, b.b, t);
float a = Mathf.Lerp(a.a, b.a, t);
Color result = new Color(r, g, b, a);

その中で、Mathf.Lerp 関数は Unity エンジンの別の静的関数であり、2 つの浮動小数点数間の線形補間に使用されます。

Color.Lerp 関数は、ゲーム内の血球バー、エネルギー バー、経験値バーなどの UI 要素の色のグラデーション効果を実現したり、色のグラデーションが必要なその他のシーンを実現したりするなど、幅広い適用シナリオを備えています。


例えば

たとえば、撃たれた後、血液量は元の 90% に減少し、最初は緑、最後は赤になります。

public Image healthBar; // 血量条Image组件

public Color healthColorFull = Color.red; // 血量条满值颜色
public Color healthColorNull = Color.green; // 血量条空值颜色

private float healthMax = 100f; // 最大血量
private float health = 100f; // 当前血量

void Update() {
    
    
    health -= 10f; // 假设角色被射击后血量减少10
    healthBar.color = Color.Lerp(healthColorNull, healthColorFull, health / healthMax);
}

このコードでは、Lerp 関数を使用して現在の血液量バーの色を計算し、現在の血液量と最大血液量の比率に従って補間係数を計算してから、血液量バーの色を次のように設定します。補間係数に従って計算されたカラー値。血液量を減らす過程で、血液量バーの色が緑から赤に徐々に変化し、血液量バーの色のグラデーション効果を実現します。


Guess you like

Origin blog.csdn.net/qq_20179331/article/details/130078991