본문 바로가기
Unreal 게임 개발/Unreal Tool 활용

Unreal Enhanced Input (향상된 입력) - 3

by daisy0461 2023. 1. 25.

Modifier

이제 Modifier에 관련해서 알아보자

이 Modifier의 가장 좋은 예시는 "이동"이다.

IMC_Default

이 창이 프로젝트를 처음 만들었을 때 Charactor에게 적용되는 IMC_Default이다.

IA_Move를 살펴보면 W에 Swizzle Input Axis Values가  있다.

IA_Move

IA_Move를 보면 Value Type에 Axis2D(Vector 2D)가 있는 것을 확인할 수 있다.

IA_Move라는 Input Action은 2개의 float값(2D Vector)을 조정할 수 있다.

 

지금까지 간단하게 설명을 하면 IA_Move는 2차원 값을 조정할 수 있다. 즉, X, Y값을 조정해서 캐릭터를 움직이게 하는 것이다.

보통 W가 입력이 되면 앞으로 가고 S가 입력되면 뒤로 간다.

입력이라는 단어도 중요한데 Enhanced Input System에서 WASD를 눌렀는지 아닌지(입력을 했는지 아닌지)와 같은 1차원적인 값을 지원한다. 즉, 입력을 하면 1의 값을  Return하고 입력하고 있지 않으면 0의 값을 Return한다.

 

IMC_Default로 돌아가서 W의 Modifier에 Swizzle Input Axis Value가 있다.

이것은 원래 Default로 정해져있는 X축으로 이동하는 것(A, D)을 Y축(W, S)으로 바꿀 수 있도록 하는 것이다.

그러면 W를 누르면 1의 값을 Return하는데 이 값을 내 캐릭터가 앞으로 가게 설정을 해야하기 때문에 Swizzle Input Axis Value를 통해 설정을 하는 것이다.

Swizzle Input Axis Value Dropdown

Swizzle Input Axis Value Dropdown을 클릭하면 다음과 같이 나타난다.

YXZ라는 의미는 W를 눌렀을 때 Default 값이라면 X축으로 데이터를 보냈을텐데

YXZ로 변경을 해서 Y방향으로 데이터를 보내는 것이다.

이러면 W를 입력하면 1의 값을 보내는데 Swizzle Input Axis Value를 통해 Y축 방향으로 이동하라고 Modifier가 변경을 해주는 것이다.

 

S키를 살펴보면 W와 같이지만 Negate가 있다.

Modifier는 위에서 아래로 순차적으로 적용이 되기 때문에 W와 같이 S키가 눌리면

1의 값을 Y축으로 보내는 작업을 수행한다. 이때 Negate를 통해 1이 음수로 변해서 -1이 되어 뒤로 이동하게 된다.

 

A, D에는 Swizzle Input Axis Value가 없는데 Default값으로 X축 방향으로 이동하라는 의미이기 때문에 추가를 해주지 않아도 괜찮다.

 

이동이라는 예시를 통해 Modifier가 하나의 Input Action에 여러개를 추가할 수 있고

위에서 아래로 순차적으로 적용이 된다는 것 또한 알 수 있었다.

 

 

Trigger

이제 도큐먼트 마지막에 있는 Trigger에 대해 알아보자

Trigger는 앞에서 설명했던 것 보다 훨씬 이해하기가 쉽다.

이전 Unreal Enhanced Input (향상된 입력) - 2에서 설명했지만 해당 조건이 충족되었는지 확인을 하고 작업을 실행하게 된다.

Modifier는 입력이 들어오면 값을 변경한다고 생각을 하고 Trigger는 조건이 다 충족되서 실행할 것인지를 나타낸다.

Enhanced Input System으로 인해 간단하게 Trigger에서 짧은 Tap(Click), 긴 Tap, 버튼의 누름과 해제등 이벤트를 확인한다.

예를 들어 캐릭터가 기를 모아 공격을 하고 버튼을 놓으면 공격하는 기능이 있다.

그러면 Trigger에서 얼만큼 Hold하며 기를 모을지 지정하고 버튼을 놓으면 공격하게 하면 된다.

 

Trigger에는 세가지 유형의 Input Trigger가 존재한다.

  1. Explicit(명시적) Type은 Input Trigger가 들어오면 입력이 수행되도록한다. (이동)
  2. Implicit(암시적) Type은 Input Trigger 및 lmplicit Trigger가 모두 충족될 때만 수행을 한다.(기모아 공격)
  3. Blocker(차단) Type은 Input Trigger가 들어오면 입력이 실패하도록 한다.

이렇게 되면 Trigget는 세가지 상태를 나타낼 수 있다.

  1. None: Input Trigger의 조건이 만족되지 않아 Input Trigger가 실패함.
  2. Ongoing: Input Trigger의 조건이 일부 충족이 되었고 다른 Input Trigger를 처리중이지만 성공은 아님
  3. Triggered: Input Trigger의 조건이 모두 충족이 되었고 Input Trigger가 성공함.