Input Manager 창에서는 프로젝트에 대한 입력 축과 해당 연결 동작을 정의할 수 있습니다. 액세스하려면 Unity 메인 메뉴의 오른쪽 상단 탐색 표시줄에서 Edit > Project Settings로 이동한 후 Input Manager를 선택하십시오.
입력 관리자는 다음 타입의 컨트롤을 사용합니다.
생성하는 모든 프로젝트에는 기본적으로 여러 입력 축이 생성되어 있습니다. 이러한 축을 사용하면 프로젝트에서 키보드, 마우스 및 조이스틱 입력을 바로 사용할 수 있습니다.
이러한 축에 대한 자세한 내용을 보려면 Input Manager 창을 열고 축 이름 옆에 있는 화살표를 클릭하여 프로퍼티를 확장하십시오.
각 입력 축에는 다음의 프로퍼티가 있습니다.
| 프로퍼티 | 기능 |
|---|---|
| Name | 축 이름입니다. 스크립트에서 축에 액세스할 때 사용할 수 있습니다. |
| Descriptive Name, Descriptive Negative Name | 이러한 값은 더 이상 지원되지 않고 작동하지 않습니다. 이전에는 시작 시 Rebind Controls 화면에서 사용자에게 표시되었지만, 이 화면도 지원이 중지되었습니다. |
| Negative Button, Positive Button | 축을 음의 방향과 양의 방향으로 각각 미는 데 사용하는 컨트롤입니다. 키보드의 키이거나 조이스틱 또는 마우스의 버튼일 수 있습니다. |
| Alt Negative Button, Alt Positive Button | 축을 음의 방향과 양의 방향으로 각각 미는 데 사용하는 대체 컨트롤입니다 |
| Gravity | 아무 입력도 없을 때 축이 중립쪽으로 떨어지는 속도(초 단위)입니다. |
| Dead | 애플리케이션이 움직임을 등록할 수 있도록 사용자가 아날로그 스틱을 움직여야 하는 정도입니다. 런타임 시점에 이 범위 내에 있는 모든 아날로그 기기의 입력은 null로 간주됩니다. |
| Sensitivity | 축이 대상의 값으로 향하기 위한 속도(초 단위)입니다. 디지털 장치 전용입니다. |
| Snap | 활성화되어 있는 경우 반대 방향에 해당하는 버튼을 누르면 축 값이 0으로 초기화됩니다. |
| 타입 | 축을 제어하는 입력 타입입니다. 다음 값 중에서 선택하십시오. - 키 또는 마우스 버튼 - 마우스 이동 - 조이스틱 축 |
| Axis | 이 축을 제어하는 연결된 기기의 축입니다. |
| JoyNum | 이 축을 제어하는 연결된 조이스틱입니다. 특정 조이스틱을 선택하거나, 모든 조이스틱에서 입력을 쿼리할 수 있습니다. |
축 값은 다음과 같습니다.
가상 축을 추가하려면 Size 필드의 숫자를 높이십시오. 이렇게 하면 리스트 하단에 새로운 축이 생성됩니다. 새로운 축은 리스트에 있는 이전 축의 프로퍼티를 복사합니다.
가상 축을 제거하려면 다음 중 하나를 수행하십시오.
가상 축을 복사하려면 마우스 오른쪽 버튼으로 클릭하고 Duplicate Array Element를 선택하십시오.
키 또는 버튼을 축에 매핑하려면 입력 관리자의 Positive Button 또는 Negative Button 프로퍼티에 해당 이름을 입력하십시오.
키 이름은 다음의 명명 규칙을 따릅니다.
| 키 패밀리 | 명명 규칙 |
|---|---|
| 문자 키 |
a, b, c… |
| 숫자 키 |
1, 2, 3… |
| 화살표 키 |
up, down, left, right
|
| 숫자패드 키 |
[1], [2], [3], [+], [equals]… |
| 수정 키 |
right shift, left shift, right ctrl, left ctrl, right alt, left alt, right cmd, left cmd
|
| 특수 키 |
backspace, tab, return, escape, space, delete, enter, insert, home, end, page up, page down
|
| 기능 키 |
f1, f2, f3… |
마우스 버튼의 이름은 mouse 0, mouse 1, mouse 2 등으로 지정됩니다.
조이스틱 버튼은 다음의 명명 규칙을 따릅니다.
| 버튼 원점 | 명명 규칙 |
|---|---|
| 조이스틱의 특정 버튼입니다. |
joystick button 0, joystick button 1, joystick button 2… |
| 특정 조이스틱의 특정 버튼입니다. |
joystick 1 button 0, joystick 1 button 1, joystick 2 button 0… |
Input.GetKey와 위에 명시된 명명 규칙을 사용하여 특정 키 또는 버튼에 대한 입력을 쿼리할 수도 있습니다. 예를 들면 다음과 같습니다.
Input.GetKey("a");
또 다른 키 액세스 방법은 KeyCode 열거형을 사용하는 것입니다.
스크립트에서 가상 축에 액세스하기 위해 축 이름을 사용할 수 있습니다.
예를 들어 Horizontal 축의 현재 값을 쿼리하고 변수에 저장하려면 다음과 같이 Input.GetAxis를 사용할 수 있습니다.
float horizontalInput = Input.GetAxis ("Horizontal");
움직임이 아니라 이벤트(예: 게임 내에서 무기 발사)를 설명하는 축의 경우에는 대신에 Input.GetButtonDown을 사용하십시오.
두 개 이상의 축이 동일한 이름을 사용하는 경우 쿼리는 절대값이 가장 큰 축을 반환합니다. 따라서 축 이름에 두 개 이상의 입력 기기를 할당할 수 있습니다.
예를 들어 Horizontal이라는 이름으로 두 개의 축을 만든 후 하나는 키보드 입력에 할당하고 다른 하나는 조이스틱 입력에 할당할 수 있습니다. 사용자가 조이스틱을 사용하는 경우 입력은 조이스틱에서 수신되고 키보드 입력은 null입니다. 그렇지 않으면 입력은 키보드에서 수신되고 조이스틱 입력은 null입니다. 이를 통해 여러 컨트롤러의 입력을 처리하는 단일 스크립트를 작성할 수 있습니다.
예제
Horizontal 및 Vertical 축의 입력과 transform.Translate 메서드를 사용하여 XZ 공간(전방, 후방, 왼쪽, 오른쪽)에서 게임 오브젝트를 움직일 수 있습니다. 움직이려는 게임 오브젝트에 연결된 스크립트의 update() 메서드에 다음 코드를 추가하십시오.
float moveSpeed = 10;
//Define the speed at which the object moves.
float horizontalInput = Input.GetAxis("Horizontal");
//Get the value of the Horizontal input axis.
float verticalInput = Input.GetAxis("Vertical");
//Get the value of the Vertical input axis.
transform.Translate(new Vector3(horizontalInput, verticalInput, 0) * moveSpeed * Time.deltaTime);
//Move the object to XYZ coordinates defined as horizontalInput, 0, and verticalInput respectively.
Time.deltaTime은 마지막 프레임 이후 경과한 시간을 나타냅니다. moveSpeed 변수를 Time.deltaTime과 곱하면 게임 오브젝트가 프레임마다 일정한 속도로 움직입니다.