我想创建一个hp bar,当hp为满(scale = 1)时,rgb为100,200,255(如亮绿色),当hp为0(scale = 0)时,rgb为100,50,0 (深红色):
void getHPBarColor(int startR,int startG,int startB,int endR,int endG,int endB,float scale);
getHPBarColor(100,200,255,100,50,0,0.5)(半个hp)会返回黄色,黄色是颜色选择器中起始颜色和最终颜色之间的颜色。
答案 0 :(得分:1)
这取决于您的Color
课程。我假设你有一个简单的Color
类,需要3个整数(分别是红绿蓝)。这也假设您可以将HP作为百分比传递(这是有道理的,因为这个函数不一定知道50hp是多少,因为最大HP可能依赖于怪物等。)
struct Color
{
int red;
int green;
int blue;
Color(int r, int g, int b) : red(r), green(g), blue(b) {}
friend std::ostream& operator << (std::ostream& oss, const Color& clr)
{
oss << clr.red << ", " << clr.green << ", " << clr.blue << endl;
return oss;
}
};
Color GetHPColor(double dPercent) { return Color(255-(255*dPercent), 0 + 255*dPercent, 0); }
int main() {
cout << GetHPColor(0.0); // 255, 0, 0 at 0% hp
cout << GetHPColor(0.5); // 127, 127, 0 at 50% hp
cout << GetHPColor(1.0); // 0, 255, 0 at 100% hp
return 0;
}
您选择的颜色可能不同。这是为了让您了解如何做到这一点。