Хочу сделать игрока неуязвимым после получение урона
public class PlayerCharacters : MonoBehaviour
{
[SerializeField] private Text HealthText;
public int Health = 3;
bool OnDamage = true;
private void Start()
{
HealthText.text = "Health: " + Health;
}
#region HealthSystem
public void HealthDamage(int damage)
{
if (OnDamage)
{
StartCoroutine(Damage(damage));
OnDamage = false;
}
else
{
OnDamage = true;
}
}
private IEnumerator Damage(int damage)
{
Health -= damage;
HealthText.text = "Health: " + Health;
yield return new WaitForSeconds(1);
}
#endregion
}
не знаю как сделать что-бы спустя примерно 5 секунд игрок снова мог получать урон и естественно во время этого не мог получать урон, пробовал то что знаю, но ничего не помогло, сейчас код стоит на том уровне где я что-то пытался делать.
Ответы (2 шт):
Автор решения: Danis
→ Ссылка
damageTime = текущие время
if (текущие время + damageTime >= 5)
{
StartCoroutine(Damage(damage));
damegeTime = текущие время
}
Автор решения: Andrew
→ Ссылка
в библиотеки LeanTween есть прекрасная функция - DelayedCall()
Подключаешь сам ассет и делаешь вот это:
OnDamage = false;
LeanTween.delayedCall(gameobject, 5.0f, { OnDamage = true; } );
вообще там много полезных вещей которые будет удобно использовать в проэкте, весьма советую ознакомится с даной библиотекой в целом. Она прям маст хэв для любого проэкта.