본문 바로가기

[Unity] 키보드, 마우스 입력 처리 받기

Kwonriver 2023. 1. 5.
728x90

유니티에서는 Input 클래스를 통해 입력을 받을 수 있다. Input은 유니티가 제공하는 입력을 총괄하는 클래스이다. 입력은 크게 3가지 상태로 처리되는데 Down, Stay, Up 이다. Down은 눌렀을 때, Stay는 눌리고 있는 중일 때, Up은 뗐을 때를 의미한다. 

 


[ 단순 입력 처리 ]

게임에서 그 어떤 입력이라도 받는다면 Input.anyKeyDown이 True가 된다. 어떠한 게임이 로딩이 모두 완료되어 "Press Any Key" 또는 "아무 키나 입력" 같은 화면이 나왔을 때 유저가 어떤 키를 누르더라도 다음 화면으로 넘기고 싶다면 Input.anyKeyDown이 True일 때를 체크하면 된다.

 

만약 아무 키나 누르고 있는 상태를 체크하고 싶다면 Input.anyKey가 True인지 체크하면 된다. Input.anyKey가 True라면 현재 어떤 입력을 하고 있는 중이라는 뜻이다. 그런데 현재 사용하고 있는 버전인 유니티 2020에서는 Input.anyKeyUp이 존재하지 않는다. 따라서 어떠한 키가 입력 해제되었는지 체크하기 위해서는 별도의 함수를 만들어야 한다. 

 

Input.anyKeyUp이 존재하지 않는다.

 


[ 마우스 입력 처리 ]

Input 클래스 내의 별도의 함수를 사용하여 현재 마우스 입력 상태를 체크한다.

 

  • GetMouseButtonDown : 마우스 입력이 들어왔을 때 True를 반환
  • GetMouseButton : 마우스 입력이 진행 중일 때 True를 반환
  • GetMouseButtonUp : 마우스 입력을 멈췄을 때 True를 반환

 

 

매개변수 중 0은 마우스 왼쪽 버튼, 1은 마우스 오른쪽 버튼이다. 

 


[ 키보드 입력 처리 ]

Input 클래스 내의 별도 함수를 사용하여 현재 키보드 입력 상태를 체크한다.

  • GetKeyDown : 특정 키가 눌렸을 때 True 반환
  • GetKey : 특정 키가 눌리고 있을 때 True 반환
  • GetKeyUp : 특정 키가 눌린 상태에서 뗐을 때 True 반환

매개변수로 정수를 입력했던 마우스 입력과 달리 키보드 입력은 KeyCode의 값을 매개변수로 받는다. 

KeyCode 안에는 우리가 흔히 아는 Return(Enter), ESC, A, B, Space 등등의 키가 매핑되어 있다.

 

 

키보드는 특정 키를 커스텀 매핑하여 사용할수도 있다. 언리얼의 인풋 바인딩과 유사하다.

유니티 상단에 있는 [Edit] - [Project Settings] 를 클릭하면 프로젝트 설정 창이 나타난다. 여기서 [Input Manager]를 클릭하면 Axis가 존재하는데 프로젝트를 생성하면 유니티가 자주 사용하는 키를 이미 매핑해놓았다. 

 

 

Negative Button은 음수값이 들어올 키, Positive Button은 양수값이 들어올 키를 세팅한다. 앞에 Alt 가 있는 것은 대체 키로 기본적인 Negative Button과 Positive Button을 누를 수 없을 때 백업으로 눌릴 키를 세팅한다. 

이제 매핑된 키의 이름을 사용하여 키 입력을 받아보자. Horizontal로 명명된 횡(좌우) 버튼은 키보드 왼쪽, 오른쪽과 a, d이다. 이 4개의 키가 눌렸을 때 처리를 위해서 GetButton, GetButtonDown, GetButtonUp 과 GetAxis 또는 GetAxisRaw 함수를 사용한다. 

 

  • GetButton : 매핑된 키가 현재 눌리고 있을 때 True를 반환한다.
  • GetButtonDown : 매핑된 키가 눌리기 시작할 때 True를 반환한다.
  • GetButtonUp : 매핑된 키가 눌린 상태에서 떼질 때 True를 반환한다.
  • GetAxis : 매핑된 키 입력을 받으면 -1 ~ 1 사이의 float 값을 반환한다. 입력 시간이 짧을수록 0에 가까운 숫자가 반환된다.
  • GetAxisRaw : 매핑된 키 입력을 받으면 -1, 0, 1 의 값을 반환한다. 

매핑된 키는 대소문자를 구분하므로 틀려서는 안된다.

서로 상반되는 키 2개를 동시에 입력하면 0이 반환된다.

 

 

 

728x90