@yraiv

Почему у переменной берется 0?

Хочу горение реализовать, а именно постепенное нанесение урона, каждые n секунды снимать хп. Почему он обнуляет мои значения при запуске карутины
void OnTriggerEnter2D(Collider2D collider)
    {
        if (collider.gameObject.tag == "FireBullet")
        {
            fireDamage = collider.gameObject.GetComponent<FireDamage>().atack; // получаю 4
            timeBurn = collider.gameObject.GetComponent<FireDamage>().TimeFire; // получаю 4
            ThistimeBurn = 0;
            Burning();
        }

    }

IEnumerator Burning()
    {
        Debug.Log(timeBurn); // получаю 0


        if (timeBurn > ThistimeBurn)
        {

            health = -fireDamage;
            ThistimeBurn = +Time.deltaTime;


            yield return new WaitForSecondsRealtime(1f);
            StartCoroutine(Burning());
        }

    }
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
K0TlK
@K0TlK
Буллю людей.
Это делается через корутины либо через таски. Вот пример через корутину:

using System.Collections;
using UnityEngine;

public class Fire : MonoBehaviour
{

    private void Start()
    {
        StartCoroutine(Burn(5f, 1f));
    }

    private IEnumerator Burn(float time, float damageInterval)
    {
        while (time > 0)
        {
            time -= damageInterval;
            Debug.Log("ApplyDamage");
            yield return new WaitForSeconds(damageInterval);
        }

        yield break;
    }
}


В методе старт я стартую корутину. Сама корутина, в моем случае, будет в течение time времени писать лог через каждые damageInterval секунд. yield break нужен для того, чтобы корутина завершилась после выполнения цикла.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Farawa
потому что в триггере ты получаешь данные из объекта, а в корутине хз откуда, еще ты не запускаешь корутину в принципе, лучше стартуй корутину на объекте, который будет гореть, еще в корутину передавай этот объект, чтобы менять его данные
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы