유니티/유니티 C#

유니티 입력 처리 심화 - (5) Action의 Processor

monstro 2024. 12. 25. 21:43
728x90
반응형

Action에 사용하는 Interaction 말고 이번 포스트에서는 Processor에 대해 알아보겠습니다.

Interaction이 입력키가 동작하는 방식을 설정한다면,

Processor입력 값을 변경하는 용도로 사용합니다.

 

Interaction과 ProcessorInput에 개별적으로 바인드될 수 있는데,
따라서 원하는 Action에만 특정한 Interaction이나 Processor가 동작하도록 설정할 수 있습니다.

 

Processor는 Action의 타입인 Control Type에 의존적입니다.
따라서 Any 타입의 경우 어떠한 Processors든 사용할 수 있으므로 특히 주의해야 합니다.

 

그리고 특히 중요한 것은 Processor는 중복 사용이 가능하다는 것입니다.

이때 위에서 아래의 순서대로 적용되므로 순서대로 배치하는 것에 주의를 기울여야 합니다.

 

 

Processor의 종류는 다음과 같습니다.

 

이 모든 Processor를 전부 알아보지는 않고 관련없는 요소는 간단하게 설명만 하고 넘어가겠습니다.

 

1) Invert

Invert는 간단하게 동작합니다.

기존에 정해놓은 Positive와 Negative 값을 서로 바꿉니다.

기존의 Action은 다음과 같이 정의하였습니다.

 

 

이런 상황에서 Invert Processor를 적용해보겠습니다.

실행 결과는 다음과 같습니다.

 

 

D 키를 누른 경우, 1이 출력되고 A 키를 누른 경우, -1이 출력되는 것을 볼 수 있습니다.

 

2) Scale

Scale의 경우도 간단하게 동작합니다.

Factor라는 설정값을 받고, 기존의 입력값에 설정한 Factor를 곱하게 됩니다.

 

다음과 같이 Factor에 2를 설정한 후 실행결과를 확인해보겠습니다.

한 가지 의아한 점은 현재 Factor에 설정한 값이 에디터에서는 2배로 적용된다는 점입니다.

unity 2022 버전인 지금도 문제가 해결되지 않아 유니티 6에서는 문제가 해결되있기를 바라고 있습니다.

이를 감안하고 실행결과를 확인해보겠습니다.

 

 

의도한 2를 곱하지는 않지만, 값이 곱해져 나오는 것을 확인할 수 있습니다.

 

3) Clamp

Clamp의 경우도 매우 간단하게 동작합니다.

입력 값Min과 Max로 설정한 값 사이에서 조절합니다.

자주 사용하는 FMath의 Clamp 함수를 그대로 사용한다고 생각하시면 편합니다.

 

Factor 프로세서를 먼저 설정하여 2를 곱하고 그 다음에

Clamp 프로세서를 설정하여 Min과 Max를 각각 -0.5와 0.5로 설정하였습니다.

실행 결과는 다음과 같습니다.

 

 

의도한 대로 0.5와 -0.5가 출력되는 것을 확인할 수 있습니다.

 

4) Axis Dead Zone

Axis Dead Zone의 경우,

키보드 입력이 아닌 게임 패드의 스틱을 사용하는 경우에 유용합니다.

입력값이 Min보다 작으면 입력이 이뤄지지 않고, Max보다 크면 Max값으로 바꿉니다.

 

5) Normalize

Normalize 프로세서의 경우, 정규화를 적용하기 위해 사용합니다.

일반적으로 1D Axis(1차원) 입력에서는 사용하지 않습니다.

대신 어느 방향에서든 입력이 들어올 수 있는 2D Axis(2차원) 입력 또는 3D Axis(3차원) 입력에 사용합니다.

 

Normalize 프로세서를 사용하면 어느 방향에서든 이뤄지는 이동은 반드시 0~1사이의 값이 됩니다.

이를 통해 언제나 일관된 이동을 만들 수 있습니다.

 

그러나, 2차원이나 3차원 입력의 경우 다음과 같이

 

 

Mode에서 기본적으로 Digital Normalized가 제공되므로 Normalize Processor를 따로 사용하지 않아도 됩니다.

 

728x90
반응형