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 даёт высокую точность выполнения кода в корутинах.