извините, если этот вопрос очень простой.Я создал сопрограмму, которая обнаруживает столкновения каждые 5 секунд.Внутри этой сопрограммы я хотел бы выполнить анимацию в течение 3 секунд, поэтому я получил следующий фрагмент кода:
private IEnumerator OnCollisionStay2D(Collision2D collision)
{
if (collision.collider.tag == "mama") {
//interrupt movement
float currentTime = Time.time;
float madBegin = Time.time;
while (currentTime - madBegin < 3)
{
personAnimator.runtimeAnimatorController = Resources.Load("Animations/human1mad_0") as RuntimeAnimatorController;
currentTime = Time.time;
Debug.Log(currentTime);
}
isAngry = true;
}
yield return new WaitForSeconds(5);
}
Я записал истекшее время в цикле while, и currentTime
, похоже, необновление.В результате истекшее время равно 0, и мой цикл while никогда не завершается.Кроме того, так как это выполняется в сопрограмме, которая должна выполняться одновременно, я не понимаю, почему не-циклический цикл while заморозил бы всю игру.
Разъяснение высоко ценится.