私はJavaゲームを書いています。何かを撃つ強さを測るパワーメーターを実装したいと思っています。
0 から 100 までの int を受け取る関数を作成する必要があり、その数値の高さに基づいて、緑 (パワー スケールでは 0) と赤 (パワー スケールでは 100) の間の色を返します。
ボリューム コントロールの仕組みに似ています。
緑と赤の間の色を生成するには、色の赤、緑、青のコンポーネントに対してどのような操作を行う必要がありますか?
したがって、実行すると、getColor(80)
オレンジ色 (R、G、B の値)getColor(10)
を返すか、より緑/黄色の RGB 値を返します。
新しい色の R、G、B 値のコンポーネントを増やす必要があることはわかっていますが、色が緑から赤に変わるときに何が上下するかは具体的にわかりません。
進捗:
HSV/HSB カラー スペースを使用することになったのは、グラデーションの方が気に入ったからです (中間にダーク ブラウンはありません)。
私が使用した機能は次のとおりです。
public Color getColor(double power)
{
double H = power * 0.4; // Hue (note 0.4 = Green, see huge chart below)
double S = 0.9; // Saturation
double B = 0.9; // Brightness
return Color.getHSBColor((float)H, (float)S, (float)B);
}
「power」は 0.0 から 1.0 までの数値です。0.0 は明るい赤を返し、1.0 は明るい緑を返します。
Java 色相チャート: