所以基本上我在C#XNA游戏中为我的敌人制作健康栏。我得到了健康的百分比,例如80/100 = 0.8 = 80%因此我的游戏知道绘制健康栏的绿色部分有多大。因此,如果有80%的HP,它会将健康栏拉到80%。我遇到的问题是,一旦健康状况从100下降,百分比会自动降至0.0 / 0%并且不会被绘制。这是我的代码:
//calculate the width of the green portion of healbar
//zDay.Game1.hp_top.Width = Original size of image (35px)
float size = (hp/max_hp) * zDay.Game1.hp_top.Width;
//draw percentage of health
sb.DrawString(zDay.Game1.CourierNew, (hp/max_hp).ToString(), new Vector2(50, 80), Color.Black);
//draw size of green portion
sb.DrawString(zDay.Game1.CourierNew, (size).ToString(), new Vector2(50, 50), Color.Black);
//draw green portion of health bar
Rectangle bg = new Rectangle(x - 20, y - 30, (int)size, zDay.Game1.hp_top.Height);
sb.Draw(zDay.Game1.hp_top, bg, Color.White);
有关为何发生这种情况的任何想法?
答案 0 :(得分:2)
我猜这个问题不是乘法,而是分裂;声明:
(hp/max_hp)
最有可能被评估为零(因为你正在通过int(我假设)潜水,结果将介于0和1之间,或者以整数术语,0)。
尝试使用
((float)hp/(float)max_hp)
相反。