레벨 블루프린트에서 입력(예. Enter, 좌 클릭 등)을 받아서 진행하고 있었는데, 액터에서 입력을 받으려니 실행이 안돼서 찾아봄
액터에서 입력을 받으려면 입력 활성화 설정을 따로 해줘야 함
1. 레벨 블루프린트에서는 입력을 받을 수 있는데, 액터에서는 왜 안될까?
두 블루프린트는 입력을 처리하는 방식에서 차이가 존재하기 때문
1-1. 레벨 블루프린트
- 역할 : 레벨과 관련된 이벤트를 관리하기 위한 블루프린트
- 레벨의 전반적인 이벤트, 특정 시나리오의 시작과 종료, 타이밍에 따른 이벤트 트리거 등을 처리하는 데 이상적
- 따라서, 기본적으로 입력을 받을 수 있으며, 별도의 입력 활성화 설정 없이도 아래 이미지처럼 'InputAction'과 'InputAxis' 노드를 사용하여 키보드, 마우스 등의 입력을 직접 처리할 수 있음
Action : 버튼의 입력이 있는지 없는지만을 확인할 때 (변환값 : True/False)
Axis : 버튼 입력의 강도나 기울기를 값으로 확인할 때 (변환 값 : 0.0~입력된 값)
1-2. 액터 블루프린트
- 역할 : 게임 내의 개별 객체를 표현하고, 그 객체의 행동, 상호작용, 속성을 정의하는 데 사용
- 모든 액터가 기본적으로 입력을 받게 하면, 입력 처리의 복잡성과 성능 문제가 증가할 수 있기 때문에 액터에서 입력을 받기 위해서는 추가 설정이 필요
2. 그럼 액터에서 입력을 받으려면 어떻게 해야할까?
2-1. 입력 활성화
입력을 받으려는 액터의 Begin Play에서 Enable Input 연결
- Target핀 : Self(액터 그 자체)
- 이 노드는 Player Controller(입력을 제공해 줄 플레이어)가 지정되어야 하므로, 현재 플레이어 컨트롤러를 얻어와 연결해야 함.
따라서, Player Controller핀에는 Get Player Controller 노드를 연결하여 현재 플레이어 컨트롤러를 가져옴
- 플레이어 컨트롤러 : 게임의 사용자 입력을 중앙에서 처리하도록 설계되어 있음, 모든 종류의 입력처리를 직접 관리하며 주 입력 처리기로서의 기능을 함
2-2. 입력 사용
이제는 레벨 블루프린트에서 했던 것처럼 'InputAction'과 'InputAxis' 노드를 사용하여 키보드, 마우스 등의 입력을 직접 처리할 수 있음
언리얼 공식 문서
https://docs.unrealengine.com/4.27/ko/InteractiveExperiences/Input/ActorInput/Blueprints/