#c# #unity3d
Вопрос:
Эй, я уже довольно давно работаю над этим кодом, связанным с повреждением во времени, я использовал МНОГО онлайн-ресурсов, и у меня есть множество попыток попробовать это, но это не сработало, поэтому я пришел сюда. ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Мой объект не разрушается при выходе, он просто достигает выхода, и ничего не происходит.
if(CurrentStatus == Status.Burning amp;amp; burning==false){
burning=true;
StartCoroutine (DamageOverTimeCoroutine(100, 5));
Debug.Log("what");
burning = false;
//CurrentStatus = Status.Empty;
}
public IEnumerator DamageOverTimeCoroutine(float damageAmount, float duration){
float amountDamaged = 0;
float damagePerLoop = damageAmount / duration;
while (amountDamaged < damageAmount) {
int numInt = (int)Math.Ceiling(damagePerLoop);
enemyCurrentHealth -= numInt;
var clone = (GameObject) Instantiate(damageNumber, this.gameObject.transform.position, Quaternion.Euler(Vector3.zero));
clone.GetComponent<FloatingNumbers> ().damageNumber = numInt;
amountDamaged = damagePerLoop;
yield return null;
Debug.Log(amountDamaged);
}
if(amountDamaged>damageAmount){
//StopCoroutine(DamageOverTimeCoroutine());
}
CurrentStatus = Status.Empty;
burning=false;
}
Повторяю, это наносит ущерб, а затем прекращается по доходности, я изменил его с waitSeconds только для того, чтобы посмотреть, сработает ли это по-другому, это не так. У меня никогда не было отладки после пожара с выходом. Почему это происходит?
Был бы очень признателен, спасибо
Комментарии:
1. вы где-нибудь отключаете или уничтожаете этот объект?
2. Я знаю, что это как-то не по теме, но как побочная заметка
StopCoroutine(DamageOverTimeCoroutine());
не сработает, даже если ваш результат сработает. Когда вы звонитеStopCoroutine
, вы должны передать ему фактическийIEnumerator
экземпляр, с которого вы запустили сопрограмму (т. е. тот, который вернулся приDamageOverTimeCoroutine()
вызове,StartCoroutine(DamageOverTimeCoroutine())
просто сообщив вам об этом, потому что эта проблема в прошлом вызывала у меня много-много проблем!3. Что вы передали в качестве значения продолжительности? Я предполагаю, что вы хотите, чтобы продолжительность составляла секунды, но здесь речь идет о количестве кадров. Может ли быть так, что значение длительности равно 1?
Ответ №1:
Как я понял, клон var = (GameObject) Инстанцирует(damageNumber, this.GameObject.transform.position, Кватернион.Эйлера(Вектор3.ноль)); клон.GetComponent ().damageNumber = Число;
короткие строки обводили его, не выдавая ошибки. Странно, но сейчас это работает. Спасибо за помощь, ребята