Input 클래스
사용자의 입력을 받는 메서드이며 주로 키보드와 마우스의 입력을 받을 때 사용된다.
키 입력에는 3가지 동작원리가 있는데 키워드와 실행동작은 다음과 같다.
키워드 | 실행동작 | 반환값 |
---|---|---|
anyKeyDown | 키를 누르는 순간 | |
anyKey | 키를 계속 누르는 동안 | TRUE |
anyKeyUp | 키에서 손을 땔 때 |
anyKeyDown
은 처음 누르는 순간 한 번만 작동한다.
anyKey
는 처음 누르는 순간 한 번 작동하고 이후 계속 누르는 동안에도 작동한다.
anyKeyUp
는 버튼에서 손을 땔 때 한 번만 작동한다.
anyKey
키워드는 아무 버튼(마우스나 특수키 포함)이나 입력시 동작한다.if(Input.anyKey) {
//!#$!$!#@!#
}
만일 키보드의 입력만 받고 싶다면 anyKey
대신에 GetKey
를 사용하면 된다.
키워드 | 실행동작 | 반환값 |
---|---|---|
GetKeyDown() | 키를 누르는 순간 | |
GetKey() | 키를 계속 누르는 동안 | TRUE |
GetKeyUp() | 키에서 손을 땔 때 |
KeyCode
키워드를 사용하면 된다.KeyCode
뒤에 지정할 버튼을 적어주면 된다.if(Input.GetKey(KeyCode.Return)){ //Return 버튼은 엔터키를 의미한다.
//!@#!@$!@
}
마우스의 입력을 받고 싶다면 GetMouseButton
키워드를 사용하면 된다.
마우스의 입력 동작도 동일하게 3가지이며 다음과 같다.
키워드 | 실행동작 | 반환값 |
---|---|---|
GetMouseButtonDown | 키를 누르는 순간 | |
GetMouseButton | 키를 계속 누르는 동안 | TRUE |
GetMouseButtonUp | 키에서 손을 땔 때 |
해당 키워드들 뒤에 (0)
이나 (1)
을 붙여야 하는데, 이는 마우스의 좌측 버튼과 우측 버튼을 의미한다.
(0)
- 좌측 버튼
(1)
- 우측 버튼
if(Input.GetMouseButton(0)){
//!@#!@#
}
그 외에도 입력을 받는 방식은 더 존재하며, 그 중 하나는 Input Manager
이다.
Unity -> Edit -> Project Settings... -> Input Manager
Input Manager
는 유니티에서 지원하는 버튼 설정이다.
Horizontal
, Vertical
, Jump
등 여러 키들이 기본 설정되어 있고, 추가나 수정 또한 가능하다.
GetKey
대신 GetButton
을 사용하고 마찬가지로 GetButtonDown
, GetButtonUp
도 존재한다.
Jump
에는 기본적으로 스페이스바가 지정되어 있고, 예시를 들자면 다음과 같다.
if(Input.GetButton("Jump")){
.
.
.
}
물론 실제로 물체가 점프하는 것은 아니며, 그저 이름에 설정된 키를 입력하면 위의 코드로 들어가는 것이다.
수평, 수직 버튼 입력을 받으면 float 값을 반환한다.
여기서 수평
, 수직
이라면 기본적으로 위에 있는 Input Manager
의 Horizontal
과 Vertical
을 의미한다.
Horizontal
과 Vertical
은 한 축씩 담당하며, 값을 가지고 있고 float으로 반환한다.
Horizontal
: 기본으로 설정된 메인키는 방향키 왼쪽과 오른쪽이다. 값은 (-1) ~ (+1)
Vertical
: 기본으로 설정된 메인키는 방향키 아래와 위이다. 값은 (-1) ~ (+1)
이를 받기 위해서 GetAxis
를 사용한다.
float Tmp = Input.GetAxis("Horizontal");
GetAxis
사용할 경우 약간의 가중치가 붙으면서 끝값에 도달한다. 만일 일정한 값을 원한다면 GetAxisRaw
를 사용하면 된다.
float Tmp = Input.GetAxisRaw("Horizontal");
GetAxisRaw
를 사용하면 값이 -1
과 1
두 개만 나온다. (두 키를 동시에 누르면 0
이 나온다.)
조이스틱을 사용한다 해도, 스틱을 오른쪽으로 약간 밀어도 +1
, 끝까지 밀어도 +1
이 나온다.