Unity에서 Physics 관련 상태는 Update()와는 다르게 FixedUpdate() 주기에 따라 동작합니다. 물리 시스템의 내부 동작은 프레임마다 일정 시간 간격(Fixed Timestep)으로 처리되며, 다음과 같이 분류할 수 있습니다.
💡 Unity Physics 시스템의 전반적인 흐름 (FixedUpdate 기준)
1. FixedUpdate 호출
Time.fixedDeltaTime 간격마다 실행됨.
- Rigidbody, Collider에 적용된 물리 연산을 준비.
- 스크립트에서
Rigidbody.AddForce, AddTorque 등 물리력을 적용하는 시점.
2. 물리 상태 적용 (Integration)
- Rigidbody의 속도(
velocity)에 따라 위치(position), 회전(rotation)이 갱신됨.
- 물리 법칙에 따른 중력(gravity), 마찰(friction), 반발력(bounciness) 등 적용.
3. Collision 감지 (Collision Detection)
- Collider 간 충돌을 계산.
- 사용자가 설정한 충돌 방식 (Discrete, Continuous 등)에 따라 처리됨.
Physics.OverlapSphere, Raycast, CheckBox 등의 검사도 여기서 처리됨.
4. 충돌 응답 (Collision Resolution)
- 충돌한 물체 간의 반응 계산.
- 물리 엔진이 충돌로 인한 반발력 및 마찰력 계산.
- Rigidbody 속도, 방향 등을 업데이트.
5. Trigger/Collision 이벤트 발생
OnCollisionEnter, OnCollisionStay, OnCollisionExit