Sto scrivendo un gioco Java e voglio implementare un misuratore di potenza per quanto duramente sparerai qualcosa.
Devo scrivere una funzione che abbia un int compreso tra 0 e 100 e in base a quanto è alto quel numero, restituirà un colore tra Verde (0 sulla scala di potenza) e Rosso (100 sulla scala di potenza).
Simile a come funzionano i controlli del volume:
Quale operazione devo eseguire sui componenti rosso, verde e blu di un colore per generare i colori tra verde e rosso?
Quindi, potrei dirlo, getColor(80)
e restituirà un colore arancione (i suoi valori in R, G, B) o getColor(10)
che restituirà un valore RGB più verde / giallo.
So che ho bisogno di aumentare i componenti dei valori R, G, B per un nuovo colore, ma non so specificamente cosa salga o scenda mentre i colori cambiano da Verde-Rosso.
Progresso:
Ho finito per usare lo spazio colore HSV / HSB perché mi piaceva di più il gradiente (nessun marrone scuro nel mezzo).
La funzione che ho usato era:
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);
}
Dove "potere" è un numero compreso tra 0,0 e 1,0. 0.0 restituirà un rosso brillante, 1.0 restituirà un verde brillante.
Tabella tonalità Java: