AController possession

Controller는 몸을 빌려 명령을 전달한다

Possess()는 보이지 않는 판단 주체와 월드에 놓인 몸을 연결한다. 입력과 AI 판단은 Controller에 남고, 위치·충돌·이동은 Pawn 또는 Character가 맡는다.

Brain PlayerController 또는 AIController가 입력과 의사결정을 잡는다.
Body Pawn과 Character가 위치, 충돌, 메시, 이동 컴포넌트를 가진다.
Link Possess()UnPossess()가 둘 사이의 소유 상태를 바꾼다.

state 01

Pawn 생성

월드에는 조종 가능한 몸이 생기지만 아직 누구의 의사결정도 붙지 않았다.

state 02

Possess 호출

Controller가 Pawn을 소유하고 입력 경로와 명령 대상이 하나로 묶인다.

state 03

명령 전달

Controller는 방향과 행동을 정하고 Pawn은 실제 이동과 충돌 반응을 수행한다.

state 04

UnPossess

소유가 풀리면 Controller는 새 대상을 찾거나 대기하고 Pawn은 입력을 잃는다.

확인 지점
Controller 쪽
Pawn/Character 쪽
디버깅 신호
입력
키보드, 마우스, AI 판단을 명령으로 해석한다.
명령을 이동·회전·액션 함수로 실행한다.
입력은 찍히는데 몸이 안 움직이면 소유 상태부터 본다.
위치
월드 좌표를 직접 대표하지 않는다.
캡슐, 메시, 이동 컴포넌트가 실제 좌표를 가진다.
카메라와 몸 위치가 어긋나면 부착 관계를 함께 점검한다.
수명
플레이어 또는 AI의 조종 주체로 오래 남을 수 있다.
죽거나 교체되면 다른 Pawn으로 바뀔 수 있다.
GetPawn()이 비어 있으면 명령 대상이 없는 상태다.

Controller ownership

판단과 입력은 Controller에 둔다

플레이어 입력, AI 판단, 대상 전환처럼 몸을 바꿔도 이어질 수 있는 로직이 여기에 어울린다.

Pawn ownership

물리적 상태는 Pawn에 둔다

캡슐, 메시, 애니메이션, 이동 컴포넌트처럼 월드에 존재하는 몸의 속성은 Pawn이 가진다.

handoff check

몸을 교체할 때 연결을 다시 본다

리스폰, 탑승, 관전 전환에서는 UnPossess()Possess() 순서가 핵심이다.

mental model

조종 주체월드의 몸을 분리해서 보면 입력 누락, 리스폰 실패, AI 전환 문제를 더 빨리 좁힐 수 있다.