본문 바로가기

게임 개발/유니티

[유니티] Input.GetKey() 한글로 입력해도 동작하게 하고 싶다면

728x90

- 예를 들어 키보드 wasd 로 캐릭터나 카메라를 이동해야하는 경우

 

Input.GetKey(KeyCode.W))
{
  MoveUp();
}

위와 같이 사용하면 영어일때만 동작하고 한글일 때는 동작하지 않습니다.

 

 

 

switch (Input.inputString)
{
  case "W":
    MoveUp();
    break;
}

이렇게 사용하면 부드럽게 실행되지 않고 뚝뚝 끊겨서 사용됩니다.

 

 

 

- 이 방법 저 방법 찾아보다가 의외로 간단하게 해결되었는데,

Edit > Project Setting... > Input Manager 에서

Use Physical Keys 를 사용하면 됩니다.

 

밑에 있는 설명을 보니 물리적 키를 사용하면 키보드 언어 레이아웃에서 키 코드를 물리적 키트에 독립적으로 매핑할 수 있다. 예를 들어  키보드의 키를 'q'라고 하면 그 'q'는 탭키의 오른쪽에 있는 키가 된다. 라고 합니다.

 

즉 우리가  'w' 로 키보드 키 입력을 사용하면 한글, 영어 등 언어에 상관없이 탭키의 오른쪽 두 번째 키를 사용하게 된다는 것 입니다.

 

그래서 한글 영어 뿐 아니라 일본어, 러시아어 등 다양한 언어설정에서도 동작하게 할 수 있을 것 같습니다. (그런데 이 문제를 찾다보니 나라별로 버그가 약간씩 있다고는 하네요. 예를 들어 러시아어에서 처음 실행하면 안되다가 러/영키?(실제로 뭐라 부르는지는 모릅니다)를 눌러 영문으로 바꿨다가 다시 러시아어로 바꾸면 동작한다던가 하는 문제들이 있는 것 같습니다.)

 

 

728x90