С# Unity3D, когда игрок был атакован, я хочу замедлить добавление здоровья игрока до 100%. Я пытаюсь добавить больше здоровья с помощью этого кода, используя PlayerHealth++, но очень быстро добавить здоровье, чтобы игрок никогда не умирал. Как это исправить?
public class HealthScript : MonoBehaviour
{
[SerializeField] Text HealthText;
void Start()
{
HealthText.text = SaveScript.PlayerHealth + "%";
}
void Update()
{
SaveScript.PlayerHealth++;
HealthText.text = SaveScript.PlayerHealth + "%";
}
}
Простым способом является установка параметра интервала в этом скрипте - число с плавающей запятой, которое может быть секундами, которые должны истечь, прежде чем будет добавлено здоровье.
Сохраните вторую переменную, которая является накопителем времени. Каждый метод обновления добавляет Time.deltaTime к этой переменной-аккумулятору.
Наконец, если этот аккумулятор больше интервала, увеличьте здоровье игроков и сбросьте аккумулятор на 0.
public class HealthScript : MonoBehaviour
{
[Tooltip("How long in seconds before health is incremented")]
public float HealthInterval = 5.0f;
private float healthIntervalAccumulator;
[SerializeField] Text HealthText;
void Start()
{
HealthText.text = SaveScript.PlayerHealth + "%";
}
void Update()
{
if ((healthIntervalAccumulator += Time.deltaTime) >= HealthInterval)
{
healthIntervalAccumulator = 0.0f;
SaveScript.PlayerHealth++;
HealthText.text = SaveScript.PlayerHealth + "%";
}
}
}
Update
выполняется один раз за кадр, поэтому каждый кадр игры вы повышаете здоровье игрока. Вам, очевидно, нужно добавить некоторые условия, когда это должно происходить