Make Unreal REAL.
article thumbnail
Advanced Unreal Engine 5 Multiplayer Gameplay Programming

 

언리얼 엔진 5부터 사용 가능한 향상된 입력은 상황에 따라 같은 입력이 다르게 감지되도록 할 수 있다.

 

 

향상된 입력

향상된 입력 플러그인을 간략하게 살펴봅니다.

docs.unrealengine.com

 

Enhanced Input 플러그인을 활성화하고 에디터를 재시작한다.

 


Project Settings - Input - Default Classes 메뉴에서 기본 Player Input Class와 Input Component Class를 Enhanced Input의 클래스로 변경한다.

 


현재 기존의 Input Mapping과 콜백 함수 바인딩으로 구성되어 있는 전후 이동, 좌우 이동, 상하 시야, 좌우 시야, 점프 조정을 향상된 입력 방식으로 변경하기 위해 5가지 동작에 대해 Input Action 에셋을 생성한다.

 

 

Value Type은 해당 Input Action이 어떤 형식의 입력을 받을지 정한다.

  • Jump는 축이 아니라 한 번의 입력에 대한 반응이므로, Value Type에 Digital (bool)을 지정한다.
  • 나머지는 축에 대한 반응이므로, Value Type에 Axis1D(float)으로 설정한다.

 

 

Input Mapping Context 에셋은 각 Input Action에 어떤 입력으로 어떻게 값을 전달할지 정한다.

  • W키를 통해 스칼라
  • S키를 통해 부호 반대
  • 마우스 상하를 부드럽게
  • ...

 

새로운 Input Mapping Context 에셋을 생성한다.

 

 

  • MoveForward
    W - Scalar (실수 값)
    S - Negate (반대 부호 실수 값)
  • MoveSide
    D - Scalar (실수 값)
    A - Negate (반대 부호 실수 값)
  • LookUp
    Mouse Y - Negate (반대 부호 실수 값)
  • Turn
    Mouse X - Scalar (실수 값)
  • Jump
    Space Bar

 


빌드 설정에 EnhancedInput 모듈을 추가한다.

 


캐릭터 클래스에 헤더를 추가한다.

 

 

생성했던 Input Mapping Context, Input Action 에셋들을 저장할 변수를 선언한다.

 

각 Input Action에 바인딩할 콜백 함수를 선언한다.

 


소스 파일에 헤더를 추가한다.


구현부를 작성한다.

 

기존에 바인딩되어 있던 함수에서 내용을 복사해오고, AxisValue 변수만 바꿔주면 된다.

  • FInputActionValue::GetMagnitude() 함수를 통해 축의 값을 가져올 수 있다.

 

 

PawnClientRestart() 함수는 클라이언트에서 컨트롤러가 빙의한 직후, Input 컴포넌트를 초기화하기 위해 호출된다.

 

 

Input Context Mapping 에셋을 통해 입력을 매핑하기 위해, PawnClientRestart() 함수를 오버라이드한다.

 


로컬 플레이어의 Enhanced Input Local Player Subsystem을 가져온 후, Input Mapping Context를 할당한다.

  • UEnhancedInputLocalPlayerSubsystem::ClearAllMappings() 함수로 기존 매핑을 지워준다.
  • UEnhancedInputLocalPlayerSubsystem::AddMappingContext() 함수로 새로운 Input Mapping Context를 지정해준다.

 

이렇게 향상된 입력 방식을 사용하게 되면, 상황에 따라 Input Mapping Context를 교체해 다양한 입력이 다양하게 활용되도록 바꿀 수 있다.

 


SetupPlayerInputComponent() 함수에서 기존 바인딩을 주석 처리하고 향상된 입력 방식으로 바인딩하도록 한다.

 


캐릭터 BP에서 기본 Input Mapping Context와 이동, 시야 조정 관련 Input Action들을 지정해준다.

 


향상된 입력 방식으로 캐릭터를 조종하는 데 성공했다.

 


기존 방식에 쓰였던 함수들은 주석 처리해준다.

 

'Unreal Engine > Advanced UE5 Multiplayer Programming' 카테고리의 다른 글

베이스 능력  (0) 2023.05.10
점프 능력  (0) 2023.05.09
발자국 소리 적용과 고급 디버깅  (0) 2023.05.07
피지컬 머티리얼  (0) 2023.05.07
데이터 에셋을 통한 애니메이션 관리  (0) 2023.05.06
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그