На курсах обычно дают один из двух вариантов:
1) Из текущего здоровья отнимают дельту и затем проверяют, не упало ли здоровье в условие:
public int healthCurrent;
public void OnHealthChanged(int healthDelta)
healthCurrent -= healthDelta;
// update health bar
if (healthCurrent <= 0) {
// death
}
}
В этом варианте у вас может быть ошибка в условии. Например в примере ниже реально можно попасть в ситуацию, когда персонаж стал бессмертным:
public int healthCurrent;
public void OnHealthChanged(int healthDelta)
if (healthCurrent > 0) {
healthCurrent -= healthDelta;
// update health bar
if (healthCurrent < 0) {
// death
}
}
}
2) Через Mathf.Clamp:
public int healthCurrent;
public int healthMaximum;
public void OnHealthChanged(int healthDelta)
healthCurrent = Mathf.Clamp(healthCurrent - healthDelta, 0, healthMaximum);
// update health bar
if (healthCurrent == 0) {
// death
}
}
В этом варианте помимо неправильного условия также можно случайно ошибиться в аргументах функции Clamp и вместо 0 указать 1, а проверять будет именно 0.