UDN
Search public documentation:

GFxKismetInputKR
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 홈 > 유저 인터페이스와 HUD > Scaleform GFx > 키즈멧에서 키보드 입력 캡처하는 법

키즈멧에서 키보드 입력 캡처하는 법


문서 변경내역: James Tan 작성. 홍성진 번역. 2011년 5월 최종 테스트.

개요


키즈멧을 통해 키즈멧 입력을 캡처하고, 그걸로 UnrealScript 코드 한 줄 작성하지 않고도! GFx 무비에 어떤 작업을 할 수 있는 방법을 설명하는 튜토리얼입니다. 플레이어가 가까이 다가가서 조작하도록 할 수 있는 컴퓨터 콘솔 화면같은 것을, 레벨에 GFx 무비로 놓아 만들 수 있는 것입니다.

셋업


새로운 플래시 파일의 스테이지 중간에 단순한 빨강 사각형을 만듭니다. 그 사각형을 무비 클립으로 변환하고, 프로퍼티 패널에서 인스턴스 이름을 'myGraphic' 이라고 줍니다. UDK 가 설치된 위치 적절한 곳에 플래시 파일을 저장합니다.

ActionScript


이 코드를 플래시 파일의 1 프레임에 있는 'actions' 라는 새 레이어에 넣습니다:

ActionScript
_global.gfxExtensions = true;
_perspfov = 25; // 3D 트랜스폼에 사용되며, 가능한 값은 1 에서 179 까지 입니다.

var keyboardInput:Object = new Object(); // 키보드 입력을 담을 오브젝트를 새로 만듭니다.
Key.addListener(keyboardInput); // 키보드 입력을 기다릴 오브젝트를 사용합니다.

/* 키가 눌리면 이 함수를 실행합니다. */
keyboardInput.onKeyDown = function()
{
    /* 키보드 입력 ASCII 코드를 'keyPressed' 안에 보관합니다. */
    var keyPressed:Number = Key.getCode();

    /* 왼쪽 화살표가 눌리면... */
    if (keyPressed == 37)
    {
        /* 무비 클립을 +5 도 회전시킵니다. */
        myGraphic._yrotation += 5;
    }
    /* 오른쪽 화살표가 눌리면... */
    else if (keyPressed == 39)
    {
        /* 무비 클립을 -5 도 회전시킵니다. */
   myGraphic._yrotation -= 5;
    }
}

ALERT! 주: 스케일폼은 현재 getAscii() 를 지원하지 않으니, 대신해서 getCode() 를 사용하도록 하십시오.

무비를 저장하고 퍼블리시 합니다.

UDK 초기 셋업


UDK 에서 간단한 테스트 레벨을 만듭니다. 라이트 하나 플레이어스타트 하나 있는 방이면 됩니다. 그런 다음:

  • 방 안 어딘가에 BSP 큐브를 만듭니다. 이 큐브의 한 면에 GFx 무비를 표시할 것입니다.
  • 큐브 한 면 바로 앞에 Trigger 를 추가합니다.
  • 이제 콘텐츠 브라우저로 SWF 파일을 임포트해 옵니다.
  • 새로이 임포트된 SWF 와 같은 패키지에 TextureRenderTarget2D 를 새로 만들고 이름을 'myRT' 라고 짓습니다.
  • 같은 패키지에 Material 을 새로 만들고, 이름을 'myMat' 라 짓습니다.
  • 머티리얼 에디터 창에 TextureSample 을 새로 추가합니다.
  • TextureSample 의 검정(RGB) 출력을 Material 의 Diffuse 입력에, 하양(알파 채널) 출력은 Material 의 Opacity 입력에 연결합니다.
  • Material 을 선택하고 Material 드롭 다운에서 Blend Mode (블렌드 모드)를 BLEND_AlphaComposite (알파 합성)으로 설정합니다.
  • 머티리얼 에디터를 열어둔 상태에서 콘텐츠 브라우저로 돌아가 'myRT' 를 선택합니다.
  • 머티리얼 에디터로 돌아가 TextureSample 을 선택한 다음, Texture 필드의 녹색 화살표를 눌러 'myRT' 를 삽입합니다.
  • 머티리얼 에디터 창을 닫으며 저장합니다.
  • SWF 파일, 렌더 텍스처, 머티리얼이 들어있는 패키지를 저장합니다.
  • 콘텐츠 브라우저에서 'myMat' 를 선택한 상태로 BSP 큐브 면, 가급적이면 Trigger 옆에 있는 면을 선택한 다음 우클릭한 후 "Apply Material : myMat" 를 선택합니다.
  • 모두 빌드하고 레벨을 저장합니다.

키즈멧 셋업


키즈멧을 열고 다음과 같은 작업을 합니다:

  • Level Loaded 이벤트를 추가합니다.
  • Open GFx Movie 액션을 추가합니다.
  • Loadded and Visible 을 Open GFx Movie 의 In 에 연결합니다.
  • Object 변수를 새로 만들고, Open GFx Movie 의 Movie Player 출력에 연결합니다.
  • Open GFx Movie 를 선택하고, 콘텐츠 브라우저의 SWF 파일을 Movie 필드에 삽입합니다.
  • 콘텐츠 브라우저의 'myRT' 를 Render Texture 필드에 삽입합니다.
  • Render Texture Mode (렌더 텍스처 모드)를 RTM_AlphaComposite 로 설정합니다.
  • 이제 레벨에 있는 Trigger 를 선택한 다음 키즈멧에서 우클릭하고 "New Event Using Trigger_x -> Touch" 를 선택합니다.
  • 새로 생긴 Trigger 노드의 Sequence Event 드롭 다운에서, Max Trigger Count (최대 트리거 횟수)를 0 으로 설정합니다.
  • Set GFx Captured Keys 액션을 새로 추가합니다.
  • Movie PLayer 입력을 위에서 만든 Object 변수에 연결합니다.
  • Trigger 노드의 Touched 출력을 Captured Keys 노드의 Activate 입력에 연결한 다음, Untouched 출력을 DeActivated 입력에 연결합니다.
  • Captured Keys 노드를 선택하고, 녹색 + 아이콘을 사용하여 Capture Keys 를 둘 추가합니다.
  • [0] 은 Left, [1] 은 Right 로 설정합니다.

레벨을 저장한 다음 에디터에서 플레이합니다.

빨강 사각형으로 보이는 GFx 무비로 걸어간 다음, 키보드의 좌우 화살표 키를 사용하여 3D 공간에서 회전시킬 수 있을 것입니다. 무비에서 멀리 떨어지면 좌우 화살표 키는 해제됩니다.

BSP 대신 그냥 스태틱 메시에 'myMat' 머티리얼을 놓을 수도 있습니다.