← Назад к вопросам
Для чего нужен FixedUpdate в MonoBehaviour?
1.6 Junior🔥 211 комментариев
#Unity Core#Физика и математика
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
FixedUpdate в Unity
FixedUpdate — критически важный метод для физических расчётов в Unity. Он вызывается с фиксированным временным интервалом (по умолчанию 50 раз в секунду), независимо от частоты кадров.
Ключевые различия Update vs FixedUpdate
Update — вызывается один раз в кадр (частота зависит от FPS):
- 60 кадров = 60 вызовов Update
- 30 кадров = 30 вызовов Update
FixedUpdate — вызывается с фиксированным шагом (всегда одинаково):
- Независимо от FPS, вызывается 50 раз в секунду (по умолчанию)
- Может быть несколько вызовов FixedUpdate в одном кадре при высоком FPS
Когда использовать
FixedUpdate нужен для:
- Применения сил к Rigidbody
- Физических расчётов и симуляций
- Работы с гравитацией и столкновениями
- Консистентной физики независимо от производительности
Update используй для:
- Обработки ввода (Input.GetKey, Input.GetAxis)
- Логики игры и геймплея
- Анимаций персонажа
- Проверок условий
Практический пример
public class PlayerMovement : MonoBehaviour
{
private Rigidbody rb;
public float moveSpeed = 5f;
private float inputX;
private void Update()
{
// Получаем ввод ЗДЕСь
inputX = Input.GetAxis("Horizontal");
}
private void FixedUpdate()
{
// Применяем силу ЗДЕСь
Vector3 newVelocity = rb.velocity;
newVelocity.x = inputX * moveSpeed;
rb.velocity = newVelocity;
}
}
Почему это важно
❌ Неправильно (применение силы в Update):
private void Update()
{
rb.AddForce(Vector3.forward * 10f); // Неустойчиво!
}
✅ Правильно (применение силы в FixedUpdate):
private void FixedUpdate()
{
rb.AddForce(Vector3.forward * 10f); // Стабильно!
}
Порядок вызовов в цикле
- FixedUpdate() — один или несколько раз (фиксированный интервал)
- Update() — один раз в кадр
- LateUpdate() — один раз в кадр
- Render — отрисовка
Итоги
- FixedUpdate = фиксированный интервал = физика = консистентность
- Update = переменный интервал = логика = гибкость
- Всегда применяй силы и работай с Rigidbody в FixedUpdate
- Получай ввод в Update, применяй эффект в FixedUpdate
Это одно из самых важных правил в Unity для корректной физики!