Control Session과 Controller
Control Session은 플레이어가 Control Station에 탑승하여 Assembly를 조작하는 동안 유지되는 세션입니다. Assembly Controller는 이 세션에서 입력을 읽고 Motor, Fan 등의 액추에이터를 제어합니다.
입력 흐름
키 또는 장치 입력
→ Input Mapping Context와 Input Action
→ Control Station의 Controller Input Slot
→ Assembly Controller
→ Motor / Fan / 액추에이터
입력은 두 종류로 나뉩니다.
1. 탑승과 내리기
CAT Assembly Interactor Component가 Control Session의 시작과 종료를 처리합니다.
아래 설정은 플레이어 Character 또는 Pawn에 추가한 CAT Assembly Interactor Component의 Details 패널 > Input에서 확인할 수 있습니다.

Managed:IMC_CATControlStation과 필요한 Action을 CAT가 자동으로 연결합니다. 기본값에서는 R 키로 가장 가까운 Station에 탑승하거나 현재 Station에서 내립니다.External: 프로젝트의 Blueprint 또는 C++ 코드에서 Control Station API를 직접 호출합니다.
IMC_CATControlStation은 탑승과 내리기만 담당하며 차량 조작 입력은 포함하지 않습니다.
2. Controller Part 만들기
Assembly를 조작하려면 Control Station Feature가 들어 있는 Part Model을 Controller Part로 사용합니다. Controller Part는 별도의 에셋 종류가 아닙니다.
- 좌석, 조종석이나 조작 패널로 사용할 Part Model을 엽니다.
- Features 패널에서 Control Station Feature를 추가합니다.
- Assembly에 맞는 Controller Class를 선택하고 Controller Settings를 조정합니다.
- 각 Controller Input Slot에 Input Action을 연결합니다.
- Assembly Editor에서 Controller Part를 Assembly에 조립합니다.
플레이어가 이 Part에 탑승하면 CAT가 Control Session을 시작하고 연결된 Input Action을 선택한 Controller에 전달합니다. 해당 Action의 키와 게임패드 입력은 플레이어가 사용하는 Input Mapping Context에서 매핑하세요.
Control Station 설정
Part Model 에디터의 Features 패널에서 Feature를 추가하고 Control Station을 선택합니다.

- Part Model에 Control Station Feature를 추가합니다.
- 사용할 Controller Class를 선택합니다.
- Controller Input Slot에 Input Action을 연결합니다.
Occupant Anchor와Exit위치를 맞춥니다.- 해당 Input Action을 프로젝트의 Input Mapping Context에 매핑합니다.
Control Station 파라미터
Control Station Feature의 Details 패널에서 탑승 방식, 카메라 동작, 입력을 받을 Controller를 설정합니다.

| 파라미터 | 설명 |
|---|---|
Control Frame |
Assembly를 조작할 때 사용할 기준 프레임을 설정합니다. |
Occupant Mode |
탑승 중 캐릭터를 Station에 표시할지 숨길지 선택합니다. |
Occupant Anchor / Exit |
탑승 중 캐릭터 위치와 내릴 때 이동할 위치를 설정합니다. |
Left Hand Grip / Right Hand Grip |
캐릭터 손 IK에 사용할 선택적 목표 위치를 제공합니다. |
Interaction Radius |
플레이어가 Station에 탑승할 수 있는 거리를 설정합니다. |
Camera Socket Offset |
탑승 중 3인칭 카메라 위치를 보정합니다. |
Ignore Camera Collision |
카메라 충돌 검사에서 현재 조작 중인 Assembly를 제외합니다. |
Controller Class / Controller Settings |
사용할 Assembly Controller와 튜닝값을 설정합니다. |
| Input Slot | Move, Throttle, Attitude 같은 Controller 입력에 Input Action을 연결합니다. |
내장 Controller
| Controller | 용도 | 기본 입력 |
|---|---|---|
| Ground Drive | 바퀴와 궤도 주행 | Axis2D |
| Aircraft | 스로틀과 자세 제어 | Axis1D + Axis3D |
| Watercraft | 전진과 조향 | Axis2D |
Occupant Mode
| 모드 | 동작 |
|---|---|
Boarding |
캐릭터를 Occupant Anchor에 배치하고 화면에 표시합니다. 좌석이나 조종석에 적합합니다. |
Possession |
캐릭터를 Station Part에 고정하고 렌더링을 숨깁니다. 캐릭터를 보여주지 않는 차량 조작에 적합합니다. |
세션 중에는 캐릭터 이동이 잠기며, 내릴 때 Exit 위치로 이동하고 기존 이동 상태를 복원합니다. 여기서 Possession은 Unreal의 AController::Possess와는 별개의 CAT 기능입니다.
Camera Settings
| 프로퍼티 | 설명 |
|---|---|
Camera Socket Offset |
탑승 중 3인칭 카메라 위치에 더할 로컬 오프셋입니다. 단위는 cm입니다. |
Ignore Camera Collision |
카메라 충돌 검사에서 현재 Assembly를 제외해 카메라가 기체에 밀리는 현상을 줄입니다. |
ACATDemoCharacter는 이 설정을 자동으로 적용합니다. 커스텀 캐릭터를 사용한다면 동일한 값을 프로젝트의 카메라 코드에 연결해야 합니다.
Blueprint Controller 만들기
- CAT Assembly Controller 또는 내장 Controller를 상속하는 Blueprint를 만듭니다.
- Class Defaults에서 필요한 Input Slot을 선언합니다.
On Controller Update에서 Slot 값을 읽고 액추에이터 출력을 설정합니다.- Control Station의 Controller Class로 해당 Blueprint를 지정합니다.

Note
액추에이터 출력은 반드시 On Controller Update 안에서 설정하세요. 일반 Event Tick으로 대체하면 안 됩니다.