UDN
Search public documentation:

KeyBindsKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 인풋 / 아웃풋 > 키 바인드

키 바인드


문서 변경내역: James Tan 작성. 홍성진 번역.

개요


언리얼 엔진 3 의 키 바인딩은 매우 유연하며, 대부분은 환경설정 파일 에 정의됩니다. 언리얼스크립트로 작동되며, 여러가지 것들을 편하게 만들어 주는 매우 편리한 기능을 합니다.

정의


키 바인드는 여러가지 프로퍼티로 정의됩니다.

  • Name 이름 - 키 바인드 이름입니다. 앨리어스나 매핑된 키 중 하나입니다.
  • Command 명령 - 이 키 바인드가 활성화될 때 실행할 명령입니다.
  • Control 콘트롤 - 콘트롤 키를 눌러야 이 키 바인드가 활성화됩니다.
  • Shift 시프트 - 시프트 키를 눌러야 이 키 바인드가 활성화됩니다.
  • Alt 앨트 - 앨트 키를 눌러야 이 키 바인드가 활성화됩니다.
  • bIgnoreCtrl 콘트롤 무시 - 콘트롤 키가 눌려 있으면 이 키 바인드는 무시됩니다.
  • bIgnoreShift 시프트 무시 - 시프트 키가 눌려 있으면 이 키 바인드는 무시됩니다.
  • bIgnoreAlt 앨트 무시 - 앨트 키가 눌려 있으면 이 키 바인드는 무시됩니다.

키 바인드 앨리어싱


키 바인드는 Name 이 매핑된 키에 일치하지 않을 때 앨리어싱됩니다. 그런 다음에는 앨리어싱된 키 바인드를 명령으로 사용할 수 있습니다. 여러 키를 하나( 이상)의 앨리어스로 매핑시킬 수 있도록 하기 위해 디자인된 것입니다. 종종 앨리어스의 명령이 적당히 복잡하거나 중복되어 있을 경우에 특히 유용합니다.

아래 앨리어싱된 키 바인드에서, 키 바인드는 Duck (쑤구리!) / Crouch (쭈구리!) 수행 방법을 제어합니다. 앨리어스는 GBA_Duck 이라 불리며, 활성화되면 Duck 을 호출하고, 절대 축 100 상태로 입력 변수 aUp 을 -1.0 설정합니다. 앨리어스가 비활성화되면 UnDuck 을 호출하고, 절대 축 100 상태로 입력 변수 aUp 을 -1.0 설정합니다.

  Bindings=(Name="GBA_Duck",Command="Duck | onrelease UnDuck | Axis aUp Speed=-1.0 AbsoluteAxis=100")
  

고로 이 앨리어스를 여러 키로 매핑하려면, 이렇게 하면 됩니다. 이 예제에서 Crouch 는 키보드의 "C" 키와 Xbox 360 콘트롤러의 "A" 버튼으로 매핑되었습니다.

  Bindings=(Name="C",Command="GBA_Duck")
  Bindings=(Name="XboxTypeS_A",Command="GBA_Duck")
  

키 바인드 체이닝


환경설정 파일에 정의된 키 바인드는 체인으로 엮어 여러 명령을 실행할 수 있습니다. 파이프 분할문자(|)로 여러 exec 함수를 체인으로 묶을 수 있으며, 그에 따라 이 모든 exec 함수를 똑같은 키에 바인딩할 수 있는 것입니다.

  Bindings=(Name="BackSpace",Command="TurnAround | SwitchToRocketLauncher | StartFire")
  

잇따르는 명령은 꼭 exec 함수일 필요는 없는데, 바로 이 점 때문에 좀 더 이벤트 기반 코드를 만들 수 있습니다. 이 키 바인드는 왼쪽 마우스 버튼을 누르면 StartFire 를 실행하다가, 떼면 StopFire 를 실행하는 키 바인드입니다. 어느 키를 누르고 떼었는 지 감지할 수 있게 되는 것입니다.

  Bindings=(Name="LeftMouseButton",Command="StartFire | onrelease StopFire")
  

키 바인드 onrelease 모디파이어


onrelease 모디파이어는 키 / 버튼을 떼었을 때 잇따르는 명령만 활성화시키도록 키 바인드 할 수 있는 것입니다.

키 바인드 변수


축 모디파이어는 보통 -1.f 에서 1.f 까지 범위 안에서 플로트 변수를 설정합니다. 이 범위 규칙의 한 가지 예외라면, 아날로그 디바이스가 마우스일 경우입니다. 조이스틱같은 아날로그 스타일의 콘트롤에 최적입니다. 이 변수는 Controller, Input 이든, PlayerController, PlayerInput 같은 서브클래스든, 그 중 하나에 정의해야 합니다. 변수 정의 예제는 다음과 같습니다:

  var input float aMouseX; // aMouseX 는 축 이름입니다.
  

This variable can then be used like this:

  Bindings=(Name="MouseX",Command="Axis aMouseX")
  

축(Axis) 에는 변수 이름 뒤에 덧붙일 수 있는 프로퍼티도 약간 있습니다.

  • AbsoluteAxis 절대 축 - 경과(delta) 시간에 걸쳐 입력 값에 이 멀티플라이어를 곱해 스케일하는 전처리기입니다. 인티저로 정의됩니다.
  • DeadZone 데드 존 - 입력값 차이 절대치가 최소한 이 값 이상 바뀌지 않은 경우, 입력은 무시됩니다.
  • Invert 뒤집기 - 입력 값을 이만큼 뒤집는 전처리기입니다.
  • Speed 속력 - 축을 변화시킬 속력입니다.

버튼

버튼 모디파이어는 키 상태에 따라 바이트 변수를 0 이나 1 로 설정합니다. 이 변수는 Controller, Input 이든, PlayerController, PlayerInput 같은 서브클래스든, 그 중 하나에 정의해야 합니다. 변수 정의 예제는 다음과 같습니다:

  var input byte bAltFire; // bAltFire 는 버튼 이름입니다.
  

This variable can then be used like this:

  Bindings=(Name="RightMouseButton",Command="Button bAltFire")
  

카운트

거의 아날로그 스타일 콘트롤에 사용되는데, 이 콘트롤에서 모든 샘플 수를 센 값을 바이트 변수에 설정합니다. 변수 정의 예제는 다음과 같습니다:

  var input byte bXAxis; // bXAxis 는 샘플 카운트 이름입니다.
  

그리고서 변수를 이렇게 사용하면 됩니다:

  Bindings=(Name="MouseX",Command="Count bXAxis")
  

마우스를 부드럽게 하는 등 콘트롤 스무딩에 주로 사용됩니다.

토글

타겟 변수로 바이트를 사용하는 토글을 자동으로 만들 수 있습니다. 변수 정의 예제는 다음과 같습니다:

  var input byte bLook; // bLook 은 변수 이름입니다.
  

그리고서 변수를 이렇게 사용하면 됩니다:

  Bindings=(Name="L",Command="Toggle bLook")
  

키 바인드 토글 트릭


키 바인드를 사용하여 새로운 키 바인드를 설정할 수도 있습니다. 이때문에 키 바인드만 사용해도 간단한 토글을 만들 수 있습니다. V 가 처음 눌리면 SwitchToWireframe 를 실행하여 키 바인드를 SwitchToLit 로 설정합니다. 그리고서 V 가 또 눌리면, SwitchToLit 를 실행하여 키 바인드를 다시 SwitchToWireframe 로 설정합니다. 토글 키가 되는 것이지요.

  Bindings=(Name="SwitchToWireframe",Command="viewmode wireframe | SetBind V SwitchToLit")
  Bindings=(Name="SwitchToLit",Command="viewmode lit | SetBind V SwitchToWireframe")
  Bindings=(Name="V",Command="SwitchToWireframe")
  

언리얼스크립트 함수로 키 바인딩


이는 exec 함수라 불립니다. 간단히, 이 시스템을 통해 언리얼스크립트로 작성된 함수를 키로 직접 매핑시킬 수 있습니다. 커스텀 플레이어 콘트롤러에 exec 함수를 넣는 간단한 exec 함수 샘플입니다.

YourPlayerController.uc
  exec function MyCustomExecFunction(int ParameterA)
  {
    `Log("User executed my custom exec function with "$ParameterA);
  }
  

그런 다음 환경설정 파일에 바인드를 만듭니다.

  Bindings=(Name="K",Command="MyCustomExecFunction")
  

언리얼스크립트에 키 바인드 설정하는 법


언리얼 엔진 3 안에서 런타임에 키 바인드를 동적으로 만들거나 리셋시킬 수도 있습니다. 이러한 기능을 쉽게 도와주는 함수가 Input 안에 셋 있습니다.

  • GetBind(const out Name Key) - 현재 이 키에 바인딩되어 있는 명령 문자열을 반환합니다.
  • SetBind(const out name BindName, string Command) - 키를 새 명령에 설정한 다음 config 에 저장합니다.

그러나 이러한 함수는 플레이어 인풋 오브젝트 인스턴스로의 액세스를 필요로 합니다. 그러기 위해 사용할 수 있는 방법은:

  local PlayerController PlayerController;
  local WorldInfo WorldInfo;
  
  WorldInfo = class'WorldInfo'.static.GetWorldInfo();
  
  if (WorldInfo != None)
  {
    PlayerController = WorldInfo.GetALocalPlayerController();
    if (PlayerController != None && PlayerController.PlayerInput != None)
    {
      // 이제 로컬 플레이어 콘트롤러에 대한 인풋 오브젝트 인스턴스로 액세스 가능합니다.
      PlayerController.PlayerInput.SetBind('J', "MyCustomExecFunction 1");
    }
  }
  

매핑가능 키


언리얼 엔진 3 에 매핑되어 있는 키 목록은 이렇습니다.

키보드

펑션 키

  • F1 - Function one.
  • F2 - Function two.
  • F3 - Function three.
  • F4 - Function four.
  • F5 - Function five.
  • F6 - Function six.
  • F7 - Function seven.
  • F8 - Function eight.
  • F9 - Function nine.
  • F10 - Function ten.
  • F11 - Function eleven.
  • F12 - Function twelve.

영숫자 키

  • A - Letter A.
  • B - Letter B.
  • C - Letter C.
  • D - Letter D.
  • E - Letter E.
  • F - Letter F.
  • G - Letter G.
  • H - Letter H.
  • I - Letter I.
  • J - Letter J.
  • K - Letter K.
  • L - Letter L.
  • M - Letter M.
  • N - Letter N.
  • O - Letter O.
  • P - Letter P.
  • Q - Letter Q.
  • R - Letter R.
  • S - Letter S.
  • T - Letter T.
  • U - Letter U.
  • V - Letter V.
  • W - Letter W.
  • X - Letter X.
  • Y - Letter Y.
  • Z - Letter Z.

특수 키

  • Escape - Escape.
  • Tab - Tab.
  • Tilde - ~.
  • ScrollLock - Scroll lock.
  • Pause - Pause.
  • one - One.
  • two - Two.
  • three - Three.
  • four - Four.
  • five - Five.
  • six - Six.
  • seven - Seven.
  • eight - Eight.
  • nine - Nine.
  • zero - Zero.
  • Underscore - _.
  • Equals - =.
  • Backslash - \.
  • LeftBracket - [.
  • RightBracket - ].
  • Enter - Enter or Numpad enter.
  • CapsLock - Caps lock.
  • Semicolon - ;.
  • Quote - '.
  • LeftShift - Left shift.
  • Comma - ,.
  • Period - ..
  • Slash - /.
  • RightShift - Right Shift
  • LeftControl - Left control.
  • LeftAlt - Left alt.
  • SpaceBar - Space bar.
  • RightAlt - Right alt.
  • RightControl - Right control.
  • Left - Left.
  • Up - Up.
  • Down - Down.
  • Right - Right.
  • Home - Home.
  • End - End.
  • Insert - Insert.
  • PageUp - Page up.
  • Delete - Delete.
  • PageDown - Page down.
  • NumLock - Num lock.
  • Divide - Numpad /.
  • Multiply - Numpad *.
  • Subtract - Numpad -.
  • Add - Numpad +.
  • PageDown - Page down.
  • NumPadOne - Numpad one.
  • NumPadTwo - Numpad two.
  • NumPadThree - Numpad three.
  • NumPadFour - Numpad four.
  • NumPadFive - Numpad five.
  • NumPadSix - Numpad six.
  • NumPadSeven - Numpad seven.
  • NumPadEight - Numpad eight.
  • NumPadNine - Numpad nine.
  • NumPadZero - Numpad zero.
  • Decimal - Numpad decimal.

마우스

  • LeftMouseButton - 왼쪽 마우스 버튼.
  • RightMouseButton - 오른쪽 마우스 버튼.
  • ThumbMouseButton - 첫째 마우스 엄지 버튼.
  • ThumbMouseButton2 - 둘째 마우스 엄지 버튼.
  • MouseScrollUp - 마우스 휠 스크롤 업.
  • MouseScrollDown - 마우스 휠 스크롤 다운.
  • MouseX - X 축 상의 마우스 이동.
  • MouseY - Y 축 상의 마우스 이동.

XBox360 콘트롤러

  • XboxTypeS_LeftThumbStick - 왼쪽 썸 스틱이 버튼으로 눌릴 때입니다.
  • XboxTypeS_RightThumbStick - 오른쪽 썸 스틱이 버튼으로 눌릴 때입니다.
  • XboxTypeS_DPad_Up - 방향 패드 위쪽입니다.
  • XboxTypeS_DPad_Left - 방향 패드 왼쪽입니다.
  • XboxTypeS_DPad_Right - 방향 패드 오른쪽입니다.
  • XboxTypeS_DPad_Down - 방향 패드 아래쪽입니다.
  • XboxTypeS_Back - 뒤 버튼입니다.
  • XboxTypeS_Start - 시작 버튼입니다.
  • XboxTypeS_Y - Y 버튼입니다.
  • XboxTypeS_X - X 버튼입니다.
  • XboxTypeS_B - B 버튼입니다.
  • XboxTypeS_A - A 버튼입니다.
  • XboxTypeS_LeftShoulder - 왼쪽 숄더 버튼입니다.
  • XboxTypeS_RightShoulder - 오른쪽 숄더 버튼입니다.
  • XboxTypeS_LeftTrigger - 왼쪽 트리거가 버튼으로 눌릴 때입니다.
  • XboxTypeS_RightTrigger - 오른쪽 트리거가 버튼으로 눌릴 때입니다.
  • XboxTypeS_LeftTriggerAxis - 왼쪽 트리거가 절반 눌렸을 때입니다.
  • XboxTypeS_RightTriggerAxis - 오른쪽 트리거가 절반 눌렸을 때입니다.
  • XboxTypeS_LeftX - 왼쪽 썸 스틱이 아날로그 콘트롤로 사용될 때 가로 위치입니다.
  • XboxTypeS_LeftY - 왼쪽 썸 스틱이 아날로그 콘트롤로 사용될 때 세로 위치입니다.
  • XboxTypeS_RightX - 오른쪽 썸 스틱이 아날로그 콘트롤로 사용될 때 가로 위치입니다.
  • XboxTypeS_RightY - 오른쪽 썸 스틱이 아날로그 콘트롤로 사용될 때 세로 위치입니다.