유니티/유니티 C#

유니티 입력 처리 심화 - (4) Action의 Interaction

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

이번 포스트에서는 유니티의 새로운 입력 시스템인 Input System의

Action에 설정가능한 Interaction에 대해 알아보겠습니다.

 

Interaction은 입력 시에 Input Event(=콜백함수)를 수행하기 전까지의 설정을 의미합니다.

Interaction은 Aciton의 다음 옵션에서 설정할 수 있습니다.

 

 

Interaction의 경우 총 5개의 설정값이 존재합니다.

 

이번 포스트에서는 이 5개의 설정값들에 대해 한번 알아보겠습니다.

 

1) Hold

 

Hold에서는 Hold Time을 설정하면,

키를 입력하고 설정한 Hold Time 이후에 Action에 연결된 이벤트 함수를 호출합니다.

Hold Time을 2초로 설정한 뒤에 Save Asset을 하여 저장하였습니다. 이후 실행결과를 보겠습니다.

 

 

스페이스바를 누른 후 2초뒤에 로그가 찍히는 것을 확인할 수 있습니다.

 

2) Tap

Tap의 경우 Max Tap Duration을 설정합니다.

설정한 Max Tap Duration키를 누른 후 떼는데 걸리는 시간을 의미하는데,

Max Tap Duration 이내에 키를 눌렀다 떼면 performed에 연결된 이벤트 함수가 호출되고

Max Tap Duration을 초과하여 키를 눌렀다 떼면 canceled에 연결된 이벤트 함수가 호출됩니다.

 

Max Tap Duration을 1로 설정한 후 결과를 살펴보겠습니다.

 

 

1초 이내에 스페이스바를 눌렀다 뗀 경우, performed에 연결된 함수가 호출되었지만

1초를 초과하여 스페이스바를 눌렀다 뗀 경우, canceled에 연결된 함수가 호출되었습니다.

 

3) Slow Tap

Slow Tap의 경우, Min Tap Duration을 설정합니다. 

이때 Min Tap Duration키를 누른 후 떼는데 걸리는 시간을 의미합니다.

Min Tap Duration을 이내에 키를 눌렀다 떼면 canceled에 연결된 함수를 수행하지만,

Min Tap Duration을 초과하여 키를 눌렀다 떼면 performed에 연결된 함수를 수행합니다.

 

 Min Tap Duration을 1로 설정하고 수행 결과를 살펴보겠습니다.

 

 

1초 이내에 키를 눌렀다 떼면 cancel에 연결된 함수가,

1초를 초과하여 키를 눌렀다 떼면 perforemd에 연결된 함수가 호출되는 것을 확인할 수 있습니다.

 

4) Multi Tap

Multi Tap의 경우, 기본적으로 Max Tap Duration을 사용합니다.

하지만 추가적으로 Max Tap Spacing 요소를 갖고 있는데, 이는 Tap 사이의 최대 간격을 의미합니다.
최대 간격 이내에 다시 Tap하지 않는 경우 performed가 아닌 canceled됩니다.
즉, Tap Count 사이에 Max Tap Spacing 이내에 Tap이 이뤄저야 performed됩니다.

 

Tap Count를 2로, Max Tap Spacing을 0.5로 설정하겠습니다.

Max Tap Duration을 1로 설정하여

최종적으로 2번의 스페이스 입력이 0.5초 이내에 이뤄져야 하고

한번의 스페이스 입력은 적어도 1초 이내에 눌렀다 떼야 하도록 설정하였습니다.

 

실행결과를 살펴보겠습니다.

 

 

스페이스바를 0.5초 이내에 2번 누르고 한번 눌렀을 떼, 1초 이내에 뗀 경우에는 performed를 수행합니다.

그 외의 경우 모두 canceled를 수행하는 것을 확인할 수 있습니다.

 

5) Press

Press는 다른 Interaction과는 조금 다르게 동작합니다.

Press는 Action의 Action Type이 Button이거나

Control Type이 두 개의 값으로만 분류되는 경우사용할 수 있습니다.

 

 

 

Press를 사용하는 경우 총 3개의 타입으로 입력 장치를 사용할 수 있도록 설정합니다.

Press Only의 경우, 누른 경우에만 연결된 함수를 호출합니다.

Releas Only의 경우, 뗀 경우에만 연결된 함수를 호출합니다.

마지막으로 Press And Release의 경우, 눌렀다 뗀 경우에만 연결된 함수를 호출합니다.

 

Press Only로 설정한 후 실행결과를 확인해보겠습니다.

 

 

스페이스바를 누를 떼마다 performed에 연결된 함수를 호출하는 것을 확인할 수 있습니다.

 

추가적으로 Interactions에서 기본적으로 사용하는 Default 설정값을 확인할 수 있습니다.

이 Default 설정값을 바꿔주고 싶다면 Open Input Settings를 눌러 수정할 수 있다

728x90
반응형