[Unreal Engine C++] EnhancedInputSystem의 입력 값 구하기

2024. 3. 15. 16:21· Unreal Engine/C++
목차
  1.  EnhancedInputSystem

 EnhancedInputSystem

 

 언리얼 엔진 4 은 기본 입력 동작 및 축 설정을 프로젝트 세팅에서 설정하여 사용했습니다. 언리얼 엔진 5부터는 지금까지 사용했던 축 및 액션 매핑은 폐기 되고 대신 향상된 입력 액션 및 입력 매핑 컨텍스트(EnhancedInputSystem)를 사용하라고 권고하고 있습니다.

 

 

 폐기되었다고 축 및 액션 매핑을 사용 수 없다는 것은 아닙니다. 언리얼 엔진 4처럼 사용할 수는 있지만 이후 버전이 올라가면서 버그라던가 업데이트를 지원하지 않는다는 뜻이겠지요.  프로젝트에 따라서 축 및 액션 매핑을 사용하거나, 언리얼 엔진 5에서 사용하는 EnhancedInputSystem을 사용하시면 됩니다.

 EnhancedInputSystem을 사용할 때 입력 키에 해당하는 입력 값을 받고자 합니다. 축 및 액션 매핑의 GetInputAxisValue 함수처럼 말이죠.

 캐릭터의 전방 이동을 나타내는 MoveForward 매핑의 입력 값을 받는다고 할 때 언리얼 엔진 4에서는 다음과 같은 코드를 사용하면 간단하게 구할 수 있습니다.

 

float APRPlayerCharacter::GetMoveForward() const
{
	return GetInputAxisValue("MoveForward");
}

 

 캐릭터의 이동을 나타내는 ActionInput의 값 타입을 Axis2D(Vector2D)로 생성해서 MoveForward 매핑처럼 값을 가져오는 코드는 다음과 같습니다.

 

.h

/** 이동 입력 액션 */
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
class UInputAction* InputMove;
.cpp

float APRPlayerCharacter::GetMoveForward() const
{
	UnhancedInputComponent* EnhancedInputComponent = Cast<UEnhancedInputComponent>(InputComponent);
	FEnhancedInputActionValueBinding* MoveActionBinding = &EnhancedInputComponent->BindActionValue(InputMove);

	return MoveActionBinding->GetValue().Get<FVector2D>().Y;	// MoveForward 값
}

 

위의 코드는 다음과 같이 사용할 수도 있습니다.

 

.h

/** 이동 입력 액션 */
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
class UInputAction* InputMove;

/**
 * 캐릭터의 이동 InputAction과 그에 대응하는 값 사이의 매칭을 저장한 구조체입니다.
 * UPROPERTY()를 사용할 수 없는 구조체입니다.
 */
struct FEnhancedInputActionValueBinding* MoveActionBinding;
.cpp

void APRPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);
    
	...

	EnhancedInputComponent = Cast<UEnhancedInputComponent>(PlayerInputComponent);
	if(EnhancedInputComponent)
	{
		// 이동
		EnhancedInputComponent->BindAction(InputActions->InputMove, ETriggerEvent::Triggered, this, &APRPlayerCharacter::Move);
		MoveActionBinding = &EnhancedInputComponent->BindActionValue(InputActions->InputMove);		// 이동 InputAction의 입력 값을 바인딩합니다.
	}
}

float APRPlayerCharacter::GetMoveForward() const
{
	return MoveActionBinding->GetValue().Get<FVector2D>().Y;	// MoveForward 값
}

 

 

 

 

 

 

 

 

 

저작자표시 (새창열림)

'Unreal Engine > C++' 카테고리의 다른 글

[Unreal Engine C++] 에디터의 디테일 패널에서 속성을 수정할 때 호출되는 함수 PostEditChangeProperty / PostEditChangeChainProperty  (1) 2024.07.12
[Unreal Engine C++] EnhancedInput System으로 게임패드와 키보드 입력 장치 구분하기  (0) 2024.04.09
[Unreal Engine C++] C++에서 인터페이스 변수 사용하기  (0) 2024.01.12
[Unreal Engine C++] Widget Animation Delegate  (1) 2024.01.09
[Unreal Engine 4 C++] TimeStop (시공단열/초산 회피)  (0) 2023.08.02
  1.  EnhancedInputSystem
'Unreal Engine/C++' 카테고리의 다른 글
  • [Unreal Engine C++] 에디터의 디테일 패널에서 속성을 수정할 때 호출되는 함수 PostEditChangeProperty / PostEditChangeChainProperty
  • [Unreal Engine C++] EnhancedInput System으로 게임패드와 키보드 입력 장치 구분하기
  • [Unreal Engine C++] C++에서 인터페이스 변수 사용하기
  • [Unreal Engine C++] Widget Animation Delegate
한돌이
한돌이
GameProgramer 취업준비 중 onestone3647@gmail.com
한돌이
Lykan Studio
한돌이
전체
오늘
어제
  • 분류 전체보기 (102)
    • Daily Life (0)
    • Project (15)
      • Replica (10)
      • CE (1)
      • T (4)
    • Unreal Engine (74)
      • C++ (40)
      • Blueprint (5)
      • AI (5)
      • Effect (3)
      • UMG (2)
      • Error (2)
      • etc. (16)
    • Study (8)
      • C++ (2)
      • Algorithm (0)
      • API (4)
      • Git (2)
    • etc. (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • GIT
  • threadsafe
  • Unreal Engine 4 Error
  • 자소서
  • ProjectReplica
  • project
  • Project Replica
  • error
  • 오류
  • Study
  • ProjectT
  • Unreal Engine
  • .etc
  • ETC
  • UnrealEngine4
  • daily life
  • Unreal Engine 4 C++
  • Unreal Engine 4
  • etc.
  • ADB
  • Unreal Engine etc.
  • API
  • Project T
  • Unreal Engine 5
  • Unreal Engine4 Effect
  • Unreal Engine4
  • c++

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
한돌이
[Unreal Engine C++] EnhancedInputSystem의 입력 값 구하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.