[Unity] Input 클래스

PIAZZI·2024년 3월 27일
0

Unity

목록 보기
1/9
post-thumbnail

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")){
.
.
.
}

물론 실제로 물체가 점프하는 것은 아니며, 그저 이름에 설정된 키를 입력하면 위의 코드로 들어가는 것이다.


GetAxis

수평, 수직 버튼 입력을 받으면 float 값을 반환한다.

여기서 수평, 수직이라면 기본적으로 위에 있는 Input ManagerHorizontalVertical을 의미한다.
HorizontalVertical은 한 축씩 담당하며, 값을 가지고 있고 float으로 반환한다.

Horizontal : 기본으로 설정된 메인키는 방향키 왼쪽과 오른쪽이다. 값은 (-1) ~ (+1)
Vertical : 기본으로 설정된 메인키는 방향키 아래와 위이다. 값은 (-1) ~ (+1)

이를 받기 위해서 GetAxis를 사용한다.

float Tmp = Input.GetAxis("Horizontal");

GetAxis 사용할 경우 약간의 가중치가 붙으면서 끝값에 도달한다. 만일 일정한 값을 원한다면 GetAxisRaw를 사용하면 된다.

float Tmp = Input.GetAxisRaw("Horizontal");

GetAxisRaw를 사용하면 값이 -11 두 개만 나온다. (두 키를 동시에 누르면 0이 나온다.)
조이스틱을 사용한다 해도, 스틱을 오른쪽으로 약간 밀어도 +1, 끝까지 밀어도 +1이 나온다.

profile
범부에오

0개의 댓글