외부입력이라 함은 컴퓨터 프로그램 내에서 입력을 받는 것이 아닌 사용자로부터의 키보드, 마우스와 같이 컴퓨터 외부로부터의 입력을 받는 것을 말한다.
컴퓨터 프로그램은 사용자로부터 입력된 정보를 받아와 적절한 이벤트를 보여주어야 하는데, 유니티에서는 Input class를 사용하여 외부로부터 입력된 정보를 받아올 수 있다.
Input class에는 기본적으로 게임에 많이 사용되는 키보드, 마우스의 입력정보를 받아올수 있는 메소드들이 정의되어 있다.
그리고 입력 정보를 받는 단계가 3단계로 구분되어 있어 에디터가 사용하고 싶은 정보를 선택하여 사용할 수 있다.
기본적인 마우스는 버튼이 3개로 좌클릭, 휠클릭, 우클릭순으로 0, 1, 2의 순으로 번호가 매겨진다.
코드의 사용법으로는 다음과 같다.
if(Input.GetMouseButtonDown(int Mouse))
if(Input.GetMouseButton(int Mouse))
if(Input.GetMouseButtonUp(int Mouse))
인자로 전달되는 int Mouse에 입력받고싶은 클릭의 번호를 전달하면 된다.
키보드에는 수많은 버튼이 있다. 키보드의 입력값이 열거체로 전달된다.
코드의 사용법은 다음과 같다.
if(Input.GetKeyDown(keyCode))
if(Input.GetKey(keyCode))
if(Input.GetKeyUp(keyCode))
인자로 전달되는 keyCode는 string형식으로 "a"와 같이 전달 해도 되지만 KeyCode의 열거체를 사용하여도 된다.
"a"와 KeyCode.A의 입력값은 같다.
유니티 에디터에는 편의성을 위하여 많이 사용하는 조작방법을 만들어 놓았다.
Edit -> Project Settings -> InputManager(또는 Input)에 가면 기본적으로 제공되고 있는 것들이 몇가지가 있고, 사용자가 추가, 수정을 할 수 있다.
- (Alt) Negative/Positive Button에 할당가능한 버튼 목록
- 문자 : a, b, c, ...
- 숫자 : 1, 2, 3, ...
- 방향키 : up, down, left, right
- 숫자패트 : [1], [2], [+], ...
- Modifier 키 : left shift, right ctrl, ...
- 특수키 : backspace, return, tap, ...
- 펑션키 : f1, f2, f3, ...
- 마우스 버튼 : mouse 0, mouse 1, mouse 2, ...
- 조이스틱 버튼 : joystick button 0, joystick button 1, ...
- 특정 조이스틱 특정 버튼 : joystick 1 button 0, joystick 1 button 1, ...
코드의 사용법은 다음과 같다.
float tmp = Input.GetAxis(string);
float tmp2 = Input.GetAxisRaw(string);
if(Input.GetMouseButtonDown(string))
if(Input.GetMouseButton(string))
if(Input.GetMouseButtonUp(string))
if(Input.GetKeyDown(string))
if(Input.GetKey(string))
if(Input.GetKeyUp(string))
인자로 전달되는 string에는 사용하고픈 Axis의 이름을 전달해준다.
공통점
- -1 ~ 1사이의 값을 반환한다.
차이점
- GetAxis는 입력을 받는 즉시 0부터 -1또는 1까지 값이 순차적으로 증가한다.
- GetAxisRaw는 입력을 받는 즉시 -1또는 1을 반환한다.
오브젝트의 움직임으로 예시를 들자면,
Axis를 사용하여 움직이는 오브젝트는 가속을 받아 최고속도로 도달하는 것처럼 보이고,
AxisRaw를 사용하여 움직이는 오브젝트는 입력을 받는 순간 최고속도로 움직이는 것처럼 보여진다.