에디터에서 키와 액션을 묶고 → 블루프린트에서 그 액션을 변수에 끼우고 → 코드에서 그 변수가 눌리면 함수를 부르도록 연결하고 → 함수가 실제 동작을 실행한다.
1. 헤더에 입력 변수 선언
가장 먼저 코드 쪽에 E키 입력을 담을 걸 만든다
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
UInputAction* InteractAction;
2. 처리할 함수 선언
E키가 눌렸을 때 실행할 함수를 미리 선언해둔다
void Interact();
3. 에디터에서 Input Action 에셋 생성
콘텐츠 브라우저에서 우클릭 → Input → Input Action으로 IA_Interact를 만든다.
Value Type은 Digital(bool)로 지정한다. (방향값이 필요 없고 눌렸다/안눌렸다만 필요하기 때문)
4. Input Mapping Context(IMC)에 키 연결
IMC_Default를 열고 Mapping을 추가해서 Action에 IA_Interact를 지정하고 키는 E로 매핑한다.
5. 캐릭터 블루프린트에서 변수에 에셋 연결
Details 패널에서 InteractAction 슬롯에 IA_Interact를 드래그해서 끼운다
(1번과 3,4번이 연결된 것)
6. cpp에서 입력과 함수를 바인딩
SetupPlayerInputComponent 안에서 바인딩한다.
EnhancedInputComponent->BindAction(InteractAction, ETriggerEvent::Started, this, &ATheRoomCharacter::Interact);
이 코드는 "E키가 눌리는 순간(Started) Interact()를 실행해라"는 뜻이다
7. 함수 몸체 구현
void ATheRoomCharacter::Interact()
{
if (CurrentInteractable)
{
CurrentInteractable->ActivateItem(this);
}
}
원래 이런 입력 처리는 PlayerController에 구현하는 게 일반적이지만 이번 프로젝트에서 주어진 캐릭터 템플릿은 입력이 캐릭터 클래스 안에 구현되어 있어서 그 구조를 따라갔다
'프로젝트 > The Room (방탈출 게임)' 카테고리의 다른 글
| 상호작용하면 열리는 서랍장 만들기 (0) | 2026.06.22 |
|---|---|
| 편지를 읽어야 문이 열리는 시스템 만들기 (0) | 2026.06.22 |
| 편지 토글과 안내 UI 겹침 문제 해결 (0) | 2026.06.22 |
| UMG로 상호작용 안내 위젯 띄우기 (0) | 2026.06.22 |
| 인터페이스, Enhanced Input 매핑, UI 연결 (0) | 2026.06.21 |
