如何计算 libGdx 游戏的 shoutPower?

how to calculate shoutPower for my libGdx game?

this.maxHp = 100;

this.hp = this.maxHp;

这意味着物体有 100hp,如果我们击中物体,它会从物体中减去 5hp。

这是检查对象是否受损的方法:

 public boolean takeDamage(int dmg) {

    hp -= dmg;

    reddish += 1.0f;

    if (hp <= 0) {

        return true;
  }
    return false;
}

这里是检查子弹是否击中物体的方法:

public void checkCollisions() {
    List<Bullet> b = bulletEmitter.getActiveList();
    for (int i = 0; i < b.size(); i++) {
        for (int j = 0; j < players.size(); j++) {
            if (b.get(i).isArmed() && players.get(j).getHitArea().contains(b.get(i).getPosition())) {
                b.get(i).deactivate();
                 players.get(j).takeDamage(5);
                map.clearGround(b.get(i).getPosition().x, b.get(i).getPosition().y, 8);
                continue;
            }
        }

我需要显示受到伤害(int dmg),damage 可能是我们放入方法 takeDamage(int dmg) 中的任何变量。在这种情况下 int dmg = 5;

我不能这样计算:

结果 = maxHp - hp

每次命中增加 5hp 的结果

5..10..15..20..

这是方法,我把字体放在:

        damageFont.draw(batch, "" + (maxHp - hp), position.x, position.y + 130, 85, 1, false);

    }
}

(maxHp - hp) - 增加 5hp 的结果,每次命中 5.. 10.. 15.. 20..

相反,我需要计算交易伤害的数量,但不是常数值。

(maxHp - hp) 取而代之的是 return 5,如果我们将 5 放入 takeDamage(int dmg) 或 10,如果我们输入 10.

这是每次命中所承受的伤害量:

应该是 5, 5, 5, 5

不是:5...10...15...20

就像 MarsAtomic 提到的那样,您已经有了每次命中的伤害,只需将其保存为一个新的实例变量并显示它而不是 (maxHp - hp):

private int damageTaken;

public boolean takeDamage(int dmg) {
   damageTaken = dmg;
   hp -= dmg;

   reddish += 1.0f;

   if (hp <= 0) {

       return true;
   }
   return false;
}

当您绘制字体时:

damageFont.draw(batch, "" + damageTaken, position.x, position.y + 130, 85, 1, false);