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
과 곱하면 게임 오브젝트가 프레임마다 일정한 속도로 움직입니다.