В настоящее время я пытаюсь написать скрипт автоматического восстановления hp, похожий на игры типа halo, в которых вы восстанавливаете здоровье после некоторого времени, когда вы не принимаете dmg.Он почти работает, сейчас он автоматически восстанавливает hp через 5 секунд после получения dmg, однако, если я принимаю dmg в течение этих 5 секунд, он все еще продолжает восстанавливаться.
Я создал статическое логическое значение в сценарии проигрывателя canRegenerate = true;Это логическое значение становится ложным, когда игрок получает урон.Остальное в приведенном ниже скрипте, оно снова переводит логическое значение в true через 5 секунд.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using UnityEngine.Analytics;
public class HealthBarScript : MonoBehaviour {
Image FullHearts;
public float maxHealth = 100f;
public static float health;
public bool canRegen = false;
// Use this for initialization
void Start ()
{
FullHearts = GetComponent<Image>();
health = maxHealth;
}
// Update is called once per frame
void Update ()
{
FullHearts.fillAmount = health/maxHealth;
}
void FixedUpdate ()
{
if (Player1.canRegenerate == true && health < 100f)
{
health = health + 0.5f;
}
if (Player1.canRegenerate == false)
{
StartCoroutine(Regenerate());
}
}
IEnumerator Regenerate()
{
yield return new WaitForSeconds(5);
Player1.canRegenerate = true;
}
}