Unity C#
WaitForFixedUpdate в Unity C#: как использовать с примерами кода
WaitForFixedUpdate — специальная yield-инструкция Unity для ожидания следующего обновления физики перед выполнением кода. Её применяют в корутинах, чтобы синхронизировать выполнение с физическим циклом, который работает на фиксированной частоте.
Обновление физики происходит в FixedUpdate: там считаются взаимодействия объектов, столкновения и другие физические задачи. WaitForFixedUpdate позволяет выполнять действия после этого цикла, сохраняя согласованность физики и логики.
Пример кода
Корутина регулярно добавляет силу объекту синхронно с физикой:
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour
{
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
StartCoroutine(MoveObject());
}
IEnumerator MoveObject()
{
while (true)
{
rb.AddForce(Vector3.forward * 10);
yield return new WaitForFixedUpdate(); // Ждем следующего обновления физики
}
}
}
В отличие от обычного Update, физический цикл FixedUpdate имеет фиксированную частоту, что делает его надёжнее для физики. WaitForFixedUpdate даёт высокую точность выполнения кода в корутинах.