Saya sedang menulis permainan Java dan saya ingin menerapkan pengukur daya seberapa keras Anda akan menembak sesuatu.
Saya perlu menulis fungsi yang mengambil int antara 0 - 100, dan berdasarkan seberapa tinggi angkanya, itu akan mengembalikan warna antara Hijau (0 pada skala daya) dan Merah (100 pada skala daya).
Mirip dengan cara kerja kontrol volume:
Operasi apa yang harus saya lakukan pada komponen warna Merah, Hijau, dan Biru untuk menghasilkan warna antara Hijau dan Merah?
Jadi, saya bisa menjalankan say, getColor(80)
dan itu akan mengembalikan warna jingga (nilainya di R, G, B) atau getColor(10)
yang akan mengembalikan nilai RGB yang lebih Hijau / Kuning.
Saya tahu saya perlu meningkatkan komponen nilai R, G, B untuk warna baru, tetapi saya tidak tahu secara spesifik apa yang naik atau turun saat warna bergeser dari Hijau-Merah.
Kemajuan:
Saya akhirnya menggunakan ruang warna HSV / HSB karena saya lebih menyukai gradien (tidak ada cokelat gelap di tengah).
Fungsi yang saya gunakan adalah:
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);
}
Di mana "daya" adalah angka antara 0,0 dan 1,0. 0,0 akan mengembalikan warna merah cerah, 1,0 akan mengembalikan hijau cerah.
Bagan Warna Jawa: