Unityで、指定色から指定色に切り替わる処理を書くが、毎回忘れてしまうので、メモ!
下記のように、赤から、緑など。通常の黒から白や、透過度を徐々に変えるのは簡単だが、
RGBをいじって、青から、赤などの色変化の計算はちょっと手間なので忘れてしまう。
指定の色から、指定の色に徐々に色が変わるサンプルスクリプト
// Color(0.17254901960784f ,0.074509803921569f ,0.062745098039216f); // スタートカ ラー
// Color(0.97647058823529f ,0.83921568627451f ,0.31764705882353f); // ゴールカラー
// グラデーションのポジションを管理する値 0f〜1f
float currentPointColor = (float)gameCheckPoint / (float)goalCheckPoint;
float r = (0.97f - 0.17f) * currentPointColor + 0.17f; // 指定の色から指定色へグラデーション。
float g = (0.89f - 0.07f) * currentPointColor + 0.07f; // 指定の色から指定色へグラデーション。
float b = (0.31f - 0.06f) * currentPointColor + 0.06f; // 指定の色から指定色へグラデーション。
scaffoldObj.transform.Find("background").GetComponent<SpriteRenderer>().color = new Color(r,g,b);
ポイント
float r = (0.97f - 0.17f) * currentPointColor + 0.17f;
R = (Rのゴール値 – Rのスタート値) * グラデーションのポイントを管理 + Rのスタート値 という意味
※RはRGBの赤
また、RGBの#ffffffなどのHEX値から、上記Coloe型の0f,0f,0fのフォーマットに変換する場合は、下記ツールを使うと簡単に変換できます。
↓