Unity/초보자가 알면 좋을 팁

LateUpdate에 캐릭터 이동을 넣지 않는 이유에 대하여

추운날_너를_기다리며 2026. 3. 3. 18:04

이걸 정확히 이해하면 Update / LateUpdate 역할 구분이 완전히 정리된다.

결론부터 말하면:

❌ LateUpdate에서 캐릭터 “이동 로직”을 처리하는 것은 권장되지 않는다.
✅ LateUpdate는 “UI상 표현하는 단계, 결과를 따라가는 단계”다.

그리고 중요한 포인트:

이동은 ‘표현’이 아니라 게임 상태(State) 변경이다.


1️⃣ 캐릭터 이동은 표현인가?

아니다.

캐릭터 이동은 단순히 화면에 보이는 연출이 아니라:

  • 충돌 결과에 영향
  • 스킬 범위 판정에 영향
  • 네트워크 동기화 기준 위치
  • AI 타겟팅 기준
  • 애니메이션 상태 전이 기준

즉,

이동은 게임 상태를 바꾸는 행위다.

 

표현(Presentation)은:

  • 카메라
  • 흔들림
  • 이펙트
  • UI 위치 추적

처럼 “상태를 바꾸지 않는 것”이다.


2️⃣ LateUpdate의 정확한 역할

Unity 실행 순서를 다시 보자:

 
FixedUpdate (물리)
Update (입력/로직)
LateUpdate (후처리)
렌더링
 

LateUpdate는:

Update가 끝난 이후
“최종 결과를 기준으로 동작”하는 단계다.

그래서 카메라가 여기 있는 것이다.


3️⃣ LateUpdate에서 이동하면 생기는 문제

문제 1️⃣ 실행 순서 혼란

예:

  • A 스크립트 → Update에서 이동
  • B 스크립트 → LateUpdate에서 이동

→ 어떤 이동이 최종값인가?

순서 의존성이 생긴다.

문제 2️⃣ 다른 시스템이 이전 위치를 참조함

AI, 충돌, 타겟팅 등이 Update에서 위치를 참조했는데

LateUpdate에서 위치를 바꾸면?

→ 그 프레임 안에서 “두 개의 위치”가 존재하게 된다.

이건 설계적으로 매우 위험하다.

문제 3️⃣ Rigidbody와 충돌

Rigidbody는 FixedUpdate 기준으로 위치를 계산한다.

LateUpdate에서 transform을 수정하면:

  • 물리 계산 이후 위치를 바꿔버리는 셈
  • 다음 FixedUpdate에서 물리가 다시 덮어씀
  • 미세 떨림 발생

문제 4️⃣ 네트워크 구조에서 치명적

MMORPG 같은 경우:

  • Update → 입력 처리
  • 서버 → 위치 계산
  • LateUpdate에서 또 위치 변경?

→ 서버 authoritative (권한 집중형/서버 권한)구조가 깨진다.


4️⃣ “그럼 이동도 표현 아니냐?”에 대한 정확한 답

이동에는 두 종류가 있다.

✅ 상태 이동 (State Change)

  • transform.position 변경
  • Rigidbody 이동
  • CharacterController.Move

→ 게임 세계의 실제 좌표 변경
→ 판정에 영향
→ 네트워크에 영향

이건 표현이 아니다.

✅ 시각적 이동 (Presentation)

예:

  • 카메라가 플레이어 따라가기
  • 보간(interpolation)
  • 화면 흔들림
  • 스프라이트 뒤틀림

이건 상태를 바꾸지 않는다.
그래서 LateUpdate에 적합하다.


5️⃣ 언제 LateUpdate에서 “이동”해도 되나?

예외는 있다.

✔ 카메라 이동

플레이어 결과를 따라가는 것

✔ IK 보정

애니메이션 후 위치 미세 조정

✔ 네트워크 보간

렌더링 전 시각적 위치 보정

이 경우는:

“논리적 위치”는 그대로 두고
“렌더링 위치”만 보정하는 것

이다.


6️⃣ 구조적으로 보면 이렇게 정리된다

이동은 언제 해야 하나?

상황 사용 위치 
Rigidbody 이동 FixedUpdate
CharacterController 이동 Update
Transform 직접 이동 Update
카메라 이동 LateUpdate
UI 추적 LateUpdate

7️⃣ 핵심 개념 한 줄 정리

LateUpdate는 “상태를 만드는 곳”이 아니라
“완성된 상태를 따라가는 곳”이다.


8️⃣ 한눈에 보는 논리적 정리

게임 루프는 이렇게 나뉜다:

1️⃣ 입력 → 의도 생성
2️⃣ 로직 → 상태 변경
3️⃣ 물리 → 상태 확정
4️⃣ 표현 → 시각화

LateUpdate는 4️⃣에 해당한다.

캐릭터 이동은 2️⃣ 또는 3️⃣이다.


🔥 결론

  • 캐릭터 이동은 게임 상태 변경이다.
  • LateUpdate는 상태 변경이 끝난 후의 후처리 단계다.
  • 따라서 캐릭터 이동은 Update 또는 FixedUpdate에서 해야 한다.
  • LateUpdate는 카메라, UI, 시각 보정용이다.