본문 바로가기

Unreal/Udemy 강의

Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-12

인풋 처리하기

프로젝트 세팅에 엔진->입력을 보면 기본적인 상하좌우 이동에 대한 축 매핑과 발사체를 발사하는 액션 매핑이 되어있다.

여기서 축 매핑을 더 자세히 살펴보자.

 

축 매핑은 매 프레임마다 작동하여 축 매핑 처리를 하게 된다.

함수와 연결을 시켜주며, 함수 Move(float value)와 연결되었다고 가정을 하자.

해당 함수를 축 매핑에 연결시키는 것을 바인딩한다고 한다.

WASD 옆에 있는 스케일의 값이 Move의 value 값으로 들어가게 된다.

 

이제 바인드시킬 함수를 직접 작성해보자.

우선 인풋을 처리해주는 SetupPlayerInputComponent 함수가 필요하다.

이는 BasePawn 파일에 존재하지만, 생각을 해보면 굳이 BasePawn에 있을 필요는 없다.

이동은 탱크에서만 하기에, BasePawn에서는 삭제해주고 해당 함수를 탱크로 옮겨주자.

 

옮겨 줄 때 해당 함수가 가상 함수이기 때문에 함수 안에 적혀있던 Super::SetupPlayerInputComponent() 도 작성해주는 것이 좋다.

Super는 부모 버전을 호출해주며, 탱크의 부모는 베이스폰이다.

베이스폰에서 해당 함수를 삭제하였지만, 베이스폰의 부모 클래스에서 호출하게 되므로 상관없다.

 

이제 BindAxis 함수를 이용하여 바인딩을 시켜주자.

인자로 축 매핑의 이름과, 함수를 바인딩하는 대상의 객체 포인터, 바인드 시키는 함수의 주소을 넣어준다.

 

이제 간단하게 Move 함수에 log로 value 값을 출력하도록 해주고 실행해보자.

 

 

아무것도 누르지 않았을 때는 0이, W 키를 누르면 스케일 값인 1이 나오게 된다.