在我的Java游戏中,我正在制作一个健康栏。玩家的健康状况范围为0.0到100.0。我想根据玩家的健康状况选择红色和绿色之间的颜色。如果运行状况为100.0,则颜色应为rgb(0,255,0)。如果health为0.0,则颜色应为rgb(255,0,0)。同样,如果health = 50.0,则颜色应为rgb(127,127,0)。因此,它返回的颜色是红色和绿色之间的混合,具体取决于健康状况。我怎么能做到这一点?
答案 0 :(得分:0)
假设你希望它线性变化(看起来似乎有道理):
这是有效的,因为如果你想让它线性变化,你会得到A * health + B形式的东西。
答案 1 :(得分:0)
像这样简单吗?
import java.awt.Color;
public class QuickTester {
public static void main(String[] args) {
System.out.println(getColor(100).toString());
System.out.println(getColor(75).toString());
System.out.println(getColor(50).toString());
System.out.println(getColor(25).toString());
System.out.println(getColor(0).toString());
}
private static Color getColor(double currHp) {
int green = ((int) (currHp / 100.0 * 255));
int red = 255 - green;
return new Color(red, green, 0);
}
}
<强>输出:强>
java.awt.Color[r=0,g=255,b=0]
java.awt.Color[r=64,g=191,b=0]
java.awt.Color[r=128,g=127,b=0]
java.awt.Color[r=192,g=63,b=0]
java.awt.Color[r=255,g=0,b=0]
您可以直接使用Color
返回,我使用toString()
进行原型设计。