0

所以基本上我在我的 C# XNA 游戏中为我的敌人制作健​​康条。我得到了剩余生命值的百分比,例如 80/100 = 0.8 = 80%,所以我的游戏知道绘制生命值条的绿色部分有多大。因此,如果有 80% 的生命值,它会将生命条拉到 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);

关于为什么会发生这种情况的任何想法?

4

1 回答 1

2

我猜问题不在于乘法,而在于除法;该声明:

(hp/max_hp)

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

尝试使用

((float)hp/(float)max_hp)

反而。

于 2012-11-21T02:03:05.047 回答