유니티 엔진/입력 처리 심화

유니티 6에서의 입력 처리 - (1) Input Actions Editor의 구성요소

monstro 2025. 11. 9. 20:21
728x90
반응형

- 개요

https://www.youtube.com/watch?v=TiTKAseu17A&list=PLX2vGYjWbI0RpLvO3B7aH-ObfcOifMD20&index=1

 

유니티에서 공식적으로 제공하는 Input System 관련 동영상을 정리하여 기록한다

첫 번째로 Input Actions Editor의 구성에 대해서 알아본다

 

- 사전 작업

 

구형 Input Manager가 아닌 Input System 패키지가 프로젝트에 설치되어 있어야 새로운 입력 방식을 사용할 수 있다

 

- Input Actions Editor의 구성요소

Input Actions Editor

 

1) Action Maps

가장 먼저 Action Maps에 대해서 알아본다

상단의 사진에서는 "Player"와  "UI"라는 2개의 Action Map이 존재한다

Action Map은 게임을 구성하는 입력들을 카테고리별로 구분하는 용도로 사용한다

따라서 Player는 플레이어의 입력을 모아놓은 용도이고, UI는 UI의 입력을 모아놓은 용도로 사용한다

액션 맵은 원하는 만큼 만들수 있고 각각의 맵을 전환하여 한 개의 맵 내의 모든 액션을 활성화하거나 비활성화할 수 있다

 

2) Actions

 

각각의 Action Map에는 여러개의 Input Action이 존재한다

상단의 사진에서는 Move / Look / Attack 등의 여러개의 Input Action이 존재한다

그 중에서도 Move를 살펴보면 게임패드 / 키보드 / 조이스틱의 입력이 바인딩되어 있는 것을 볼 수 있다

구형 Input Manager와 다르게 Input System에서는 Move와 같은 단일 Action Name을 사용하여

여러개의 바인딩을 코드에서 제어할 수 있다

 

특정한 3개의 Input Action - Move / Look / Attack

 

위와 같이 3개의 특정 Input Action에 대해서 알아본다

  • Move 액션 : 이동을 처리 - 게임패드의 왼쪽 스틱 / WASD / 조이스틱의 스틱
  • Look 액션 : 시선을 처리 - 게임패드의 오른쪽 스틱 / Delta(마우스 + 패드 + 터치스크린) / 조이스틱의 햇스위치
  • Attack 액션 : 공격을 처리 - 게임패드의 서쪽 버튼 / 마우스 왼쪽 버튼 / 터치스크린의 최초 터치 / 조이스틱의 트리거

 

3) Input Action의 생성

 

우상단의 + 버튼을 눌러서 새로운 Input Action을 생성할 수 있다

생성한 Input Action의 이름은 Unity C# 코드에서도 호환되며 생성한 IA에 바인딩된 모든 입력도 모니터링된다

 

 

Input Action의 Action Type에는 3가지 값이 존재한다

  • 1) Value : 기본값, 컨트롤 상태의 지속적인 변화를 추적해야 하는 입력에 사용가능
    • 예시) 게임패드의 왼쪽 + 오른쪽 스틱, 마우스 위치
  • 2) Button : 버튼 컨트롤에 사용가능, Button Pressed + Button Held + Button Released의 3가지를 등록가능
  • 3) Pass Through : Value와 비슷하지만 Value에 비교하면 입력 처리량이 적음
    • Value는 가장 많이 동작한 바인딩의 데이터를 전달
    • Pass Through는 동작하는 모든 바인딩의 데이터를 전달
    • 따라서 UI와 같은 특정한 상황에서 유리함

 

 

생성한 Input Action의 바인딩을 추가할 수 있다

바인딩할 입력은 직접 검색하여 찾거나 Listen 버튼을 누르고 해당 입력을 수행하여 찾을 수 있다

 

4) Value + Pass Through 옵션에 대한 Control Type

 

Action Type을 Value 또는 Pass Through로 설정했다면 Control Type을 설정해야 한다

  • 1) Axis : 2D 게임에서 유용, 단일 축만 필요한 경우에 사용
    • 예시) 게임패드 스틱의 가로 X축만 필요한 상황
  • 2) Integer : 마우스 클릭이나 터치 스크린의 터치 횟수를 계산
  • 3) Vecor2 : 2D 축을 저장
    • 예시) 게임패드 스틱의 X축과 Y축, 마우스의 위치 값, 터치 스크린에서 손가락의 움직임
  • 4) Delta : 위치 변화를 추적하고 픽셀 단위로 움직임을 측정
    • 예시) 마우스의 움직임이나 스크롤 값
  • 5) Vector3 + Quaternion : 3D 공간의 움직임과 회전을 저장

 

5) Binding의 추가

Input Action에 대한 Binding 옵션

 

Input Action에 대해 Binding을 추가하는 경우에 위의 옵션 중에서 선택하여 사용할 수 있다

  • 1) Add Binding 옵션 : 단일 입력으로 해당 Input Action을 수행하는 경우에 선택
  • 2) Composite 옵션 : 상 / 하 / 좌 / 우 또는 상 / 하 / 좌 / 우 / 전 / 후의 Input Action을 수행하는 경우에 선택
    • 상 / 하 / 좌 / 우의 입력은 Vector2를, 상 / 하 / 좌 / 우 / 전 / 후의 입력은 Vector3를 반환
  • 3) Positive + Negative Binding 옵션 : 버튼 입력을 수행하는 경우에 선택
    • 2개의 입력을 통해 양과 음의 값을 반환
  • 4) Binding With One Modifier 옵션 : Modifier와 Binding의 2가지 입력이 제공
    • 해당 옵션을 사용한 Input Action을 발동하기 위해서는 2개의 입력을 모두 수행해야 함
  • 5) Binding With Two Modifiers 옵션 : 2개의 Modifier와 1개의 Binding의 3가지 입력이 제공
    • 해당 옵션을 사용한 Input Action을 발동하기 위해서는 3개의 입력을 모두 수행해야 함

 

6) Interactions and Processors

Interactions와 Processors

 

하나의 Input Action에 대해서 Interactions와 Processors를 설정하여 연결된 모든 Binding에 적용할 수 있다

 

Interactions 옵션

 

Interactions는 버튼이나 축과 상호 작용하는 방식을 정의한다

  • 1) Hold 옵션 : Input Action을 트리거하기 전에 입력을 누르고 있어야 하는 시간 
  • 2) Multi Tap 옵션 : Input Action에 대한 탭 횟수와 각 탭 사이의 시간을 정의
  • 3) Press 옵션 : Input Action에 대해서 입력을 누를 때만 + 입력을 뗄 때만 + 입력을 누르고 뗄 때만 발동하도록 설정
  • 4) Slow Tap 옵션 : Input Action에 대한 최소 탭 간격 시간을 정의, 트리거하기 전에 버튼을 조금 더 길게 눌러야 함
  • 5) Tap 옵션 : Input Action을 수행하기 위해 버튼을 얼마나 빨리 Tap해야 하는지 정의

 

Processors 옵션

 

Processors는 Input Action의 데이터 처리 방식을 정의하며 선택한 Action의 유형에 따라 다르게 동작한다

여러개의 Processor를 설정할 수 있으며, 가장 위에 놓여진 Processor부터 우선 처리한다

  • 1) Clamp 옵션 : Input Action의 반환값을 고정
  • 2) Invert 옵션 : Input Action의 반환값을 반전
  • 3) Normalize 옵션 : Input Action의 반환값을 0과 설정한 최솟값 또는 최댓값으로 즉시 설정
  • 4) Scale 옵션 : Input Action의 반환값에 Factor를 곱하여 1이상의 값을 반환
  • 5) Delta Time Scale 옵션 : Input Action의 반환값이 프레임이 아닌 Time.deltaTime에 따라 업데이트
  • 6) Invert Vector 2 옵션 : Input Action의 X축 반환값과 Y축 반환값을 독립적으로 반전
  • 7) Stick Deadzone 옵션 : 게임패드 스틱의 DeadZone을 설정하여 스틱의 감도를 낮추거나 높일 수 있음
728x90
반응형