Ich schreibe ein Java-Spiel und möchte einen Leistungsmesser implementieren, um festzustellen, wie schwer es ist, etwas zu schießen.
Ich muss eine Funktion schreiben, die ein int zwischen 0 und 100 annimmt. Basierend auf der Höhe dieser Zahl wird eine Farbe zwischen Grün (0 auf der Leistungsskala) und Rot (100 auf der Leistungsskala) zurückgegeben.
Ähnlich wie bei der Lautstärkeregelung:
Welche Operation muss ich für die Rot-, Grün- und Blau-Komponenten einer Farbe ausführen, um die Farben zwischen Grün und Rot zu erzeugen?
Ich könnte also sagen, getColor(80)
und es wird eine orange Farbe zurückgeben (seine Werte in R, G, B) oder getColor(10)
die einen grün / gelben RGB-Wert zurückgibt.
Ich weiß, dass ich die Komponenten der R-, G- und B-Werte für eine neue Farbe erhöhen muss, aber ich weiß nicht genau, was nach oben oder unten geht, wenn sich die Farben von Grün-Rot ändern.
Fortschritt:
Am Ende habe ich den HSV / HSB-Farbraum verwendet, weil mir der Farbverlauf besser gefallen hat (keine dunklen Brauntöne in der Mitte).
Die Funktion, die ich benutzte, war:
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);
}
Wobei "Leistung" eine Zahl zwischen 0,0 und 1,0 ist. 0.0 gibt ein helles Rot zurück, 1.0 gibt ein helles Grün zurück.
Java Hue Chart: