본문 바로가기
개발/Unreal

언리얼 5 BP - 키보드를 누르는 동안 이벤트 유지하기 (Input Axis Mapping)

by 피로물든딸기 2023. 6. 12.
반응형

Unreal 5 전체 링크

 

키보드를 누르면 큐브가 움직이는 블루프린트를 만들어보자.

 

먼저 큐브를 레벨에 생성한다.

 

만들어진 큐브를 선택하고 추가 버튼 옆의 블루프린트 생성을 누른다.

 

에디터에서 스태틱 메시 컴포넌트를 선택한 후, 무버블로 변경한다.

 

키보드 Input을 받기 위해 아래와 같이 Enable Input 노드를 생성하고 Get Player Controller 노드를 연결한다.

 

그리고 Speed (float), Direction (Vector) 변수를 추가한다.

컴파일을 하면 기본값을 설정할 수 있다. (Speed = 10, Direction = 1, 0, 0)

 

Speed 노드에서 * 을 검색해 곱하기 함수를 추가한다.

그리고 핀 변환으로 Direction을 연결하도록 한다.

 

이제 Add Actor Local Offset으로 Q를 누르면 주어진 Direction에 Speed 만큼 이동하도록 연결한다.

 

큐브가 움직이고 있지만, Q를 누르고 있어도 한 번만 동작한다.

아래는 Q를 반복해서 눌렀기 때문에 한 칸씩 움직이게 되었다.


키보드 누른 상태 감지하기

 

유니티의 경우라면 아래의 세 메서드가 주어진다.

bool Input.GetKeyDown(KeyCode key);
bool Input.GetKey(KeyCode key);
bool Input.GetKeyUp(KeyCode key);

 

하지만 블루프린트에서는 Pressed Released만 제공되고 있다.

 

위와 같은 경우를 해결하기 위해서는 Axis Mapping을 추가하면 된다.

[편집] → [프로젝트 세팅...] 으로 이동하자.

 

[입력] → [바인딩] → [액션 매핑] 의 + 버튼을 눌러 "Q / E Cube" 키보드 매핑을 추가한다.

Q 키는 1.0이고, E 키를 누르면 뒤로 가게 하기 위해 -1.0으로 설정하였다.

 

만들어진 축 매핑은 블루프린트 이벤트그래프에서 추가가 가능하다.

 

해당 축은 Axis Value라는 노드가 있는데, 

Q를 입력하면 1이, E를 누르면 -1, 그렇지 않으면 0을 리턴한다.

따라서 이 노드를 * 에 핀을 추가하여 Speed * Axis Value * Direction이 되도록 만든다.

 

이제 QE를 누르면 큐브가 설정한 방향으로 부드럽게 움직이게 된다.

반응형

댓글