麻烦地将double与int相乘

时间:2012-11-21 01:59:16

标签: c# xna

所以基本上我在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);

有关为何发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:2)

我猜这个问题不是乘法,而是分裂;声明:

(hp/max_hp)

最有可能被评估为零(因为你正在通过int(我假设)潜水,结果将介于0和1之间,或者以整数术语,0)。

尝试使用

((float)hp/(float)max_hp)

相反。