У меня есть две функции, я хочу, чтобы harmPlayer() вызывался через каждые 5 секунд из функции Update(). Но он выполняется несколько сотен раз из функций update(). Я понимаю Update() функция получения выполняется на каждом кадре и звонит каждый раз в harmPlayer(), то как я могу реализовать ожидание в течение 5 секундCoroutine не ждет секунд
IEnumerator HarmPlayer()
{
Debug.Log("Inside Harm Player");
yield return new WaitForSeconds(5);
Debug.Log("Player Health is the issue");
}
Вот мой Update() функция
void Update() {
transform.LookAt(target);
float step = speed * Time.deltaTime;
distance = (transform.position - target.position).magnitude;
if (distance < 3.5)
{
animator.SetFloat("Attack", 0.2f);
StartCoroutine("HarmPlayer");
}
}
Это связано с тем, что ваша сопрограмма вызывается на каждое обновление, ожидая 5 секунд, а затем обрабатывая сопрограмму на все время ее вызова. Попробуйте использовать InvokeRepeating –