1. Native Gameplay Tags
- Define input tags(입력 태그 정의)
입력 태그를 정의해줍니다.
입력 태그는 점프, 이동, 발사 등 다양한 입력 동작을 나타내는 식별자입니다.
이러한 입력 태그는 소스 파일에서 다음과 같은 형태로 정의해줄 수 있습니다.
// 해더 파일
class UInputAction;
class UInputMappingContext;
USTRUCT(BlueprintType)
struct FLucyInputActionConfig
{
GENERATED_BODY()
public:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (Categories = "InputTag"))
FGameplayTag InputTag;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TObjectPtr<UInputAction> InputAction;
};
/**
*
*/
UCLASS()
class LUCY_API UDataAsset_InputConfig : public UDataAsset
{
GENERATED_BODY()
public:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TObjectPtr<UInputMappingContext> DefaultMappingContext;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (TitileProperty = "InputAction"))
TArray<FLucyInputActionConfig> NativeInputActions;
TObjectPtr<UInputAction> FindNativeInputActionByTag(const FGameplayTag& InInputTag) const;
};
이러한 태그를 이용한 방식인 향상된 인풋 시스템은
원시 입력 이벤트를 추상화하여 코드를 읽고 유지보수하기 쉽게 만듭니다.
예를 들어, 특정 키 코드 (w를 앞으로 움직이는 이동에 사용하는 것)를 확인하는 대신
MoveForward 같은 입력 태그를 사용합니다
ex)
- "MoveForward" (앞으로 이동)
- "MoveBackward" (뒤로 이동)
- "Jump" (점프)
- "Fire" (발사)
- "Pause" (일시정지)
- "Interact" (상호작용)
이러한 태그는 키보드, 마우스 버튼, 컨트롤러 입력 등 다양한 유형의 입력에 매핑될 수 있습니다.
2. Input Config Data Asset
- map input tag to input action (입력 바인딩 정의)
게임 플레이 태그를 이용할 수 있는 InputConfigDataAsset을 제작해주는 것을 말합니다.
입력 태그를 입력 동작에 매핑하는 것은 태그와 특정 이벤트를 연결하는 작업입니다.
이 매핑을 통해 원시 입력(예 : 키보드 입력이나 버튼 클릭)을 논리적인 게임 동작으로 추상화할 수 있습니다.
예시 매핑
- "MoveForward" → W 키 (키보드) 또는 Left Stick Up (게임 컨트롤러)
- "MoveBackward" → S 키 (키보드) 또는 Left Stick Down (게임 컨트롤러)
- "Jump" → 스페이스바 (키보드) 또는 A 버튼 (게임 컨트롤러)
- "Fire" → 마우스 왼쪽 버튼 또는 오른쪽 트리거 (게임 컨트롤러)
이는 구성 파일을 통해 엔진 내에서 직접 설정할 수 있습니다
(유니티 & 언리얼 엔진 모두 동일)
3. Custom Input Component
- define input binding methods (입력 콜백 정의)
입력 바인딩 방법은 입력 태그가 물리적 입력 장치와 연결되는 방식을 정의합니다.
일반적으로 코드 또는 게임 엔진의 입력 구성 시스템에서 설정됩니다.
입력 바인딩 유형 :
- 키보드 바인딩: 특정 키를 입력 태그에 매핑.
- 마우스 바인딩: 마우스 버튼과 움직임을 입력 태그에 매핑.
- 컨트롤러 바인딩: 게임패드 버튼과 축을 입력 태그에 매핑.
- 커스텀 입력 장치: 게임이 커스텀 컨트롤러를 지원하는 경우, 이러한 장치에도 입력 바인딩을 설정할 수 있습니다.
입력 바인딩 예시 코드:
if (Input.GetKey(KeyCode.W)) {
// 앞으로 이동 동작
}
if (Input.GetButton("Fire1")) {
// 무기 발사
}
Unity에서: Input.GetKey() 또는 Input.GetButton()을 사용하여 물리적인 키/버튼을 동작에 매핑할 수 있습니다.
PlayerInputComponent->BindAction("Jump", IE_Pressed, this, &ACharacter::Jump);
Unreal Engine에서: 입력 설정에서 액션 매핑을 설정할 수 있습니다.
4. Binding Input
- define input callbacks
입력 콜백은 특정 입력 동작이 발생할 때 호출되는 함수입니다.
이 콜백은 입력 태그에 연결되며, 입력이 감지되면 적절한 동작을 수행합니다.
입력 콜백 예시:
- OnJump() → 플레이어가 점프 버튼을 눌렀을 때 호출.
- OnMoveForward() → 플레이어가 앞으로 이동할 때 호출.
- OnFire() → 플레이어가 발사 버튼을 눌렀을 때 호출.
콜백 예시 코드:
void Update() {
if (Input.GetKeyDown(KeyCode.Space)) {
OnJump();
}
}
void OnJump() {
// 점프 로직 실행
}
Unity에서: Update() 함수 내에서 콜백을 정의할 수 있습니다.
PlayerInputComponent->BindAction("Jump", IE_Pressed, this, &ACharacter::Jump);
Unreal Engine에서: 입력 바인딩 중 콜백이 연결됩니다.
5.Assingn assets in editor
- fill in assets needed in editor (에디터에서 필요한 자산 설정)
에디터는 입력 시스템을 지원하도록 설정되어야 합니다.
대부분의 게임 엔진(Unity 또는 Unreal)은 입력 매핑을 에디터 인터페이스에서 구성할 수 있게 해줍니다.
Unity에서 입력 구성 단계:
- Edit > Project Settings > Input Manager를 엽니다.
- 입력 축과 동작을 정의합니다.
- "MoveForward"나 "Jump" 같은 동작 이름을 지정합니다.
- 각 입력 태그에 대응하는 키나 버튼을 설정합니다.
Unreal Engine에서 입력 구성 단계:
- Edit > Project Settings > Input을 엽니다.
- Action Mappings와 Axis Mappings을 추가합니다.
- "Jump", "MoveForward" 등 태그를 정의합니다.
- 각 매핑에 원하는 키나 버튼을 할당합니다.
언리얼 에디터에서 향상된 인풋 시스템 설정 방법 :
1. Edit > Project Settings > Input 에서
2. 사용자가 생성한 컴포넌트를 기본 입력 컴포넌트로 변경하면 된다.
요약된 워크플로우:
- 입력 태그를 정의하여 논리적인 게임 동작을 나타냅니다.
- 이 입력 태그를 특정 입력 동작에 매핑합니다 (키보드, 마우스 버튼, 컨트롤러 버튼).
- 입력 동작을 적절한 입력 장치에 바인딩합니다 (키보드, 마우스, 게임패드).
- 입력이 발생하면 콜백 함수가 호출되어 게임 로직을 실행합니다.
- 이 매핑을 게임 엔진의 에디터에서 구성하여 시스템이 입력 설정을 인식하도록 합니다.
이러한 방식으로 입력 시스템을 추상화하면 다양한 입력 장치와 설정에 쉽게 적응할 수 있는 게임을 만들 수 있습니다.
'UE5' 카테고리의 다른 글
TSubclassOf와 TSoftObjectPtr의 차이점, 그리고 FSoftObjectPaths (0) | 2024.09.26 |
---|---|
디버깅에 도움되는 메소드 ensure 사용법 (0) | 2024.09.22 |
TObjectPtr 은 뭐고 왜 쓸까? (2) | 2024.09.14 |
엔진 커마 시작하는 법 (3) | 2024.09.08 |
Experience (1) | 2024.09.07 |