AController possession
Controller는 몸을 빌려 명령을 전달한다
Possess()는 보이지 않는 판단 주체와 월드에 놓인 몸을
연결한다. 입력과 AI 판단은 Controller에 남고, 위치·충돌·이동은 Pawn
또는 Character가 맡는다.
Possess()와 UnPossess()가 둘 사이의
소유 상태를 바꾼다.
state 01
Pawn 생성
월드에는 조종 가능한 몸이 생기지만 아직 누구의 의사결정도 붙지 않았다.
state 02
Possess 호출
Controller가 Pawn을 소유하고 입력 경로와 명령 대상이 하나로 묶인다.
state 03
명령 전달
Controller는 방향과 행동을 정하고 Pawn은 실제 이동과 충돌 반응을 수행한다.
state 04
UnPossess
소유가 풀리면 Controller는 새 대상을 찾거나 대기하고 Pawn은 입력을 잃는다.
GetPawn()이 비어 있으면 명령 대상이 없는 상태다.
Controller ownership
판단과 입력은 Controller에 둔다
플레이어 입력, AI 판단, 대상 전환처럼 몸을 바꿔도 이어질 수 있는 로직이 여기에 어울린다.
Pawn ownership
물리적 상태는 Pawn에 둔다
캡슐, 메시, 애니메이션, 이동 컴포넌트처럼 월드에 존재하는 몸의 속성은 Pawn이 가진다.
handoff check
몸을 교체할 때 연결을 다시 본다
리스폰, 탑승, 관전 전환에서는 UnPossess()와
Possess() 순서가 핵심이다.
mental model
조종 주체와 월드의 몸을 분리해서 보면 입력 누락, 리스폰 실패, AI 전환 문제를 더 빨리 좁힐 수 있다.