Unity라이프사이클과 타이밍

Update vs FixedUpdate

Unity에서 `Update`와 `FixedUpdate`를 언제 쓰고 Input/Physics를 어떻게 분리할지 간단히 정리합니다.

마지막 수정 2026년 3월 17일

기본 패턴

csharp
private void Update()
{
    LookAround();
    ProcessInput();
}

private void FixedUpdate()
{
    ApplyPhysics();
}

설명

  • Input은 프레임마다 받아야 하므로 Update에서 처리합니다.
  • FixedUpdate는 물리 엔진 타이밍이라서 Rigidbody와 힘 관련 처리를 넣습니다.
  • Time.deltaTime vs Time.fixedDeltaTime을 섞지 않게 주의합니다.

짧은 예제

csharp
private void Update()
{
    float turn = Input.GetAxis("Horizontal");
    transform.Rotate(Vector3.up, turn * 90f * Time.deltaTime);
}

private void FixedUpdate()
{
    rb.AddForce(Vector3.forward * Input.GetAxis("Vertical") * 200f);
}

빠른 정리

메서드역할
Update입력/로직, 프레임 단위
FixedUpdate물리/힘, 일정 타임스텝
Time.deltaTimeUpdate용
Time.fixedDeltaTimeFixedUpdate용

주의할 점

Physics 연산을 Update에 넣으면 프레임률에 따라 힘이 달라지기 때문에, 입력을 Update에 받고 물리 적용은 FixedUpdate로 분리하세요.

참고 링크

2 sources