FixedUpdate() 함수
Unity에서 제공하는 MonoBehaviour의 메서드 중 하나로, 주로 물리 엔진(Physics)과 관련된 작업을 처리할 때 사용됩니다. Unity의 프레임 업데이트 주기와는 독립적으로 고정된 시간 간격으로 호출되므로, 물리적 연산이 일관되게 동작하도록 보장합니다.
FixedUpdate의 특징
움직임이나 물리를 구현할 때 유용합니다. FixedUpdate()는 Update()가 호출되기 전에 호출되며 게임 플레이 시 발생하는 물리를 계산하려고 할 때 작동합니다.
- 고정된 호출 주기:
- FixedUpdate는 Unity의 물리 업데이트 주기에 따라 호출됩니다.
- 기본 호출 간격은 Unity 설정에서 Time.fixedDeltaTime(기본값 0.02초)으로 정의됩니다.
- 즉, 초당 50회(1/0.02) 호출됩니다.
- 물리 엔진과의 통합:
- Rigidbody와 같은 물리 기반 컴포넌트의 움직임, 힘 적용, 충돌 감지를 처리하는 데 사용됩니다.
- 물리적인 계산은 FixedUpdate에서 수행해야 정확성과 안정성을 유지할 수 있습니다.
- 프레임 속도와 독립적:
- Update는 프레임 속도에 따라 호출 횟수가 달라지지만, FixedUpdate는 일정한 간격으로 호출됩니다.
- 프레임 속도가 불안정한 환경에서도 물리 계산의 일관성을 유지합니다.
언제 FixedUpdate를 사용해야 하나요?
FixedUpdate는 다음과 같은 작업에 적합합니다:
- Rigidbody와 상호작용:
- AddForce, AddTorque와 같은 물리 연산.
- 물리 기반 오브젝트 이동:
- Rigidbody를 사용한 이동 로직(속도, 힘, 충격 등).
- 정확한 시간 기반 계산:
- 물리 시뮬레이션의 일관성을 보장해야 할 때.
주의 사항
- transform을 사용하지 말 것:
- FixedUpdate에서는 transform을 직접 수정하지 않는 것이 좋습니다. Rigidbody를 통해 움직임을 구현하세요.
- 예:
-
csharp코드 복사rb.MovePosition(targetPosition); // Rigidbody를 통해 이동
- 고정 시간 간격 조정:
- Time.fixedDeltaTime 값을 조정하면 FixedUpdate 호출 주기를 변경할 수 있습니다.
- 예:
csharp코드 복사Time.fixedDeltaTime = 0.01f; // 초당 100회 호출
- 많은 로직을 처리하지 말 것:
- FixedUpdate는 물리 연산에 초점이 맞춰져야 하며, 비물리적인 로직은 Update에서 처리하세요.
'Unity Learn > 주니어 프로그래머' 카테고리의 다른 글
6단원 - 프로젝트 최적화 : 오브젝트 풀링 (0) | 2024.11.27 |
---|---|
6단원 - 프로젝트 최적화 : LateUpdate() (0) | 2024.11.26 |
6단원 - 프로젝트 최적화 : 접근 제한자 (0) | 2024.11.26 |
6단원 - 프로젝트 최적화 : 직렬화 (0) | 2024.11.26 |
5단원 - 사용자 인터페이스 : AddListner() (0) | 2024.11.25 |