언리얼엔진/그 외
[UE5] 캐릭터 무브먼트 컴포넌트 작동 순서 정리
mstone8370
2024. 6. 13. 22:16
캐릭터의 움직임이 처리되는 순서를 간단하게 정리한것.
피직스 시뮬레이션이나 루트 모션 관련은 제외했음.
TickComponent()
| 서버에 접속한 클라이언트인 경우 서버에서 받은 정보를 통해 위치 업데이트
| if 캐릭터의 움직임을 처리해야하는 경우. 대부분은 캐릭터가 직접 조종되고있을때.
| ControlledCharacterMove()
| | 점프 입력 확인
| | 가속도 조절
| | if Authority를 가지고있을때.
| | PerformMovement()
| | | MaybeUpdateBasedMovement()
| | | ApplyAccumulatedForces()
| | | UpdateCharacterStateBeforeMovement() // 움직임을 처리하기 전에 상태 업데이트. Crouch 상태 업데이트가 여기에서 진행됨.
| | | HandlePendingLaunch() // Character::LanchCharacter()는 이 시점까지 미뤄짐.
| | | ClearAccumulatedForces()
| | | StartNewPhysics() // MovementMode에 따라 위치와 물리적인 상태를 변경함. 위치를 변경시키는 주요 함수.
| | | UpdateCharacterStateAfterMovement() // 움직임을 처리한 후에 상태를 다시 확인해서 업데이트. Crouch 상태 업데이트가 여기에서 진행됨.
| | else if 현재 클라이언트에서 작동하고있으며, 이 캐릭터가 플레이어에 의해 조종되는 경우.
| | ReplicateMoveToServer() // PerformMovement()를 호출하는건 마찬가지지만, SavedMove에 현재 상태를 저장해서 서버에 보내주는 과정이 추가됨.
| | | 예측에 사용할 SavedMove를 생성해서 현재 상태 저장.
| | | PerformMovement()
| | | 서버로 SavedMove 정보 전달
| else if 현재 서버에서 작동하고있으며, 이 캐릭터가 플레이어에 의해 조종되는 경우.
| MaybeUpdateBasedMovement()