Unityな日々(Unity Geek)

Unityで可視化アプリを開発するための試行錯誤の覚書

Colorの補間

たとえば、点滅するインジケータなど、2つのカラー値を補間して表示したい場合に便利なのが、Color.Lerp()

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

という形式で、t=0の時 Color a、t=1の時 Color b、t=0~1でaとbの間を線形補完する。

点滅(Blinking)するインジケータを実現するには、UpdateループとMathf.PingPong()を使って次のように実装できる。

void Update () {
    if (isBlinking)
    {
        if (myMat.HasProperty("_EmissionColor"))
        {
            Color color = Color.Lerp(colorOff, colorOn, Mathf.PingPong(Time.time * speed, 1.0F); 
            myMat.SetColor("_EmissionColor", color);
        }
    }
}