我正在开展塔防计划,我遇到了一个小问题。
public void loseHealth(int amo) {
health -= amo;
checkDeath();
}
public void checkDeath() {
if(health == 0) {
deleteMob();
}
}
这样可行,但是当我尝试以下操作时,运行状况达到零并且不会删除mob。我一直试图让这个工作大约2天,似乎无法做到正确。我找不到可能有用的东西是不成功的,但我可能找不到合适的地方。
public void loseHealth(int amo) {
shot = Value.damage[0] += amo;
health -= shot;
checkDeath();
}
public void checkDeath() {
if(health == 0) {
deleteMob();
}
}
我宣布了一个数组,其中包括:
public static int[] damage = {5, 10};
我在这里有两个原因是因为我有两座塔,我试图做不同的伤害。现在我只想让它工作我可以为不同的塔做部分。如果您需要更多信息,请告诉我们。
答案 0 :(得分:2)
这是因为您的health
变量降低到0以下。因此,health == 0
将始终返回false
。请尝试以下方法:
public void checkDeath() {
if(health <= 0) {
deleteMob();
}
}
答案 1 :(得分:0)
您的loseHealth方法可能会为健康产生负值。如果是这种情况,则您的checkDeath
方法必须使用if(health <=0)
作为条件。
答案 2 :(得分:0)
您的问题是,如果您的健康整数为0,您将明确检查。在获得造成的伤害后,暴徒的健康计数器很可能是负数。
使用
if(health <= 0)
而不是
if(health == 0)