4 개의 강의

목차

오디오 입력 게시하기

[참고]

이 섹션은 보너스 섹션이기 때문에 이 섹션에 관한 내용은 자격증 시험에 들어가지 않습니다. 뿐만 아니라 마이크 입력 구현은 고급 주제이기 때문에 실습 단계에서 다루지 않은 스크립트 작업도 다룰 것입니다.

Player의 발이 바닥에 닿을 때 Player_Footsteps Event를 게시하는 것과 같이 인게임 메커니즘에 따라 사운드를 재생할 수도 있지만, 거꾸로 마이크 입력 신호를 사용하여 Player가 무기를 휘두르게 하는 등 오디오를 통해 인게임 메커니즘을 작동시킬 수도 있습니다. 사운드 재생 과정과 마이크를 여는 과정은 꽤 비슷합니다. 사운드를 재생해야 할 경우 게임 오브젝트에 연결된 Event를 게시하면 음원이 재생됩니다. 마이크에서 입력을 수신해야 할 경우에도 음원이 있는 Wwise Object에 연결된 Event를 게시해야 합니다. 하지만 이 경우 음원이 Wwise Audio Input이 되는 거죠. 이렇게 하면 마이크가 Wwise Audio Input을 음원으로 하는 Wwise 오브젝트에 직접 신호를 전송하며, Wwise Meter Effect 플러그인을 사용하면 그 신호를 측정할 수 있습니다.

Unity 스크립트 설계는 단순히 Event를 게시하는 것보다 난이도가 좀 더 높습니다. 하지만 발판이 되고자 저희가 AkMicrophone 스크립트를 미리 작성해두었습니다.

다음 단계에서는 이 스크립트를 씬에 추가하고 Wwise에서 Microphone 입력을 수신할 Sound SFX Audio Object를 만든 다음, 마이크 볼륨 레벨을 사용해서 마이크 입력이 -48dB를 초과할 때 플레이어가 공격을 실행하도록 해보겠습니다.

[참고]

경고: 다음 단계에서는 헤드폰을 사용하시는 것이 좋습니다. 스피커를 사용하실 경우 스피커 출력이 마이크에 입력될 수 있습니다.

  1. Unity 메뉴에서 Audiokinetic > Certification > 301 > Lesson 4로 가서 Posting Audio Input을 선택하세요.

  2. Hierarchy에서 Player 게임 오브젝트를 선택하세요.

  3. Inspector에서 Add Component를 클릭한 후 AkMicrophone을 검색해서 선택하세요.

    Audio Input이 Microphone 신호를 사용하도록 하려면 먼저 디지털 오디오 녹음기에서 녹음을 누르는 것처럼 마이크 신호를 활성화해야 합니다. 먼저 Wwise에서 Sound SFX를 만들어서 Wwise Audio Input 음원을 추가해봅시다.

  4. Wwise에서 Project Explorer > Actor-Mixer Hierarchy로 가세요. Default Work Unit을 우클릭한 후 New Child에서 Sound SFX를 선택하세요.

  5. 이름을 Microphone으로 지정하세요.

    아직 음원이 추가되지 않았기 때문에 Microphone이 빨간색으로 표시됩니다. 여기에 Wwise Audio Input을 사용해서 시스템의 오디오 입력을 음원으로 추가할 수 있습니다.

  6. Contents Editor에서 Add Source >>를 클릭하고 Wwise Audio Input을 선택하세요.

    마이크 볼륨이 너무 작을 경우 여기에서 Wwise Audio Input의 볼륨을 설정할 수 있습니다.

    Transport Control에서 재생 버튼을 누르면 Microphone가 활성화되어 마이크 소리를 들을 수 있습니다. 하지만 마이크 입력이 Player Attack만 트리거하도록 하면 되고 입력 신호를 들을 필요는 없기 때문에 출력을 뮤트해봅시다. 이 작업은 Actor-Mixer Hierarchy 레벨에서 하지 않는 것이 좋습니다. 입력 볼륨 신호를 측정할 수 없기 때문입니다. 대신 Microphone Sound SFX를 Audio Bus에 할당해서 Bus Volume을 줄여봅시다.

  7. Project Explorer의 Master-Mixer Hierarchy에서 Master Audio Bus > Non-World Audio Bus를 우클릭한 후 New Child에서 Audio Bus로 이동하세요.

  8. 이름을 Microphone으로 지정하세요.

  9. Audio Bus Property Editor의 General 탭에서 Bus Volume-200으로 설정하세요.

    이제 Audio Bus가 준비되었으니 Microphone을 할당해야 합니다.

  10. Microphone Sound SFX를 선택하고 Sound Property Editor의 General 탭에서Output Bus 그룹 상자의 탐색 (...) 버튼을 클릭하세요.

  11. Microphone Audio Bus를 선택하세요.

    이제 Microphone Sound SFX의 출력이 Microphone Audio Bus에 전송됩니다. 하지만 Microphone Audio Bus의 볼륨을 완전히 낮추었기 때문에 게임에서 들리지는 않습니다. 다음으로 RTPC를 Input Volume에 연결해야 합니다. Wwise Meter에서 측정된 볼륨과 RTPC를 연결할 것입니다. 준비되어 있는 Wwise Meter Effect ShareSet에서 RTPC를 추가해봅시다.

  12. Effects 탭에서 ID 0선택 버튼을 클릭하고 Wwise Meter > Meters로 가서 MicrophoneMeter Effect ShareSet를 선택하세요.

  13. Edit (...)를 클릭해서 Wwise Meter Effect Editor를 여세요.

    AkMicrophone 스크립트에서 Microphone Level RTPC Property Drawer를 찾으세요. 이 RTPC는 AkMicrophone 스크립트가 활성화되었을 때 모니터링되며 RTPC 값이 Output Game Parameter Min 속성 값(Wwise Meter의 기본값인 -48)을 초과하면 OnMicrophoneAction() UnityEvent가 호출됩니다.

    [참고]

    UnityEvent 프로퍼티는 스크립트에서 호출하지 않고 Inspector에서 직접 함수를 호출하거나 변수를 설정할 수 있게 해줍니다. UnityEvent에 대해 더 자세히 알고 싶으시다면 https://docs.unity3d.com/Manual/UnityEvents.html을 참고해주세요.

    RTPC에 Wwise Meter를 연결하고 AkMicrophone 스크립트를 선택합시다.

  14. Output Game Parameter 그룹 상자에서 선택 버튼을 클릭하고 Generic으로 가서 MicrophoneLevel RTPC를 선택하세요. .

    [작은 정보]

    이 프로퍼티는 Wwise Adventure Game를 위해 미리 제작되었기 때문에 다른 게임에 이 스크립트를 넣을 경우 Game Parameter를 새로 만들어야 합니다.

    다음으로 AkMicrophone 스크립트가 Microphone Game Parameter를 받아오도록 설정해야 합니다. 이 방법은 보통 우리가 Game Parameter를 사용하는 법과 반대 방법이라고 할 수 있습니다. Game Sync는 항상 Unity에서 Wwise로 한 방향으로만 사용해야 하는 것이 아니라 두 애플리케이션 간에 양방향으로도 사용하실 수 있습니다.

  15. Unity의 Inspector에서 AkMicrophone 스크립트로 간 후 Microphone Level RTPC를 선택하세요.

    [참고]

    Enable_Microphone Event가 보이지 않을 경우 Unity의 Wwise Settings에서 원본 Wwise Adventure Game Wwise 프로젝트를 참조하고 있을 수 있습니다. 이 경우 Edit > Wwise Settings로 가서 Wwise Project Path를 변경해주세요.

  16. Generic Work Unit을 펼치고 MicrophoneLevel Game Parameter를 선택한 후 OK를 클릭하세요.

    이제 Game Parameter에 연결되었지만 아직 Event를 선택하지 않았습니다. Audio Input을 수신하려면 Event에서 Wwise Audio Input 음원을 호출해야 합니다. 그렇다면 Event를 만들어봅시다.

  17. Wwise의 Project Explorer에서 Microphone Sound SFX를 우클릭한 후 New Event에서 Play를 선택하세요.

    Event를 잘 설명하는 이름으로 지정해주세요.

  18. Event Editor에서 Microphone Event의 이름을 Enable Microphone로 변경하세요.

    SoundBank가 Project Explorer의 Event 탭에 있는 Work Unit을 참조하기 때문에 Event가 자동으로 General SoundBank에 추가됩니다. 이제 Wwise Project를 저장하고 Generate SoundBank를 하기만 하면 Unity에서 Event를 사용할 수 있습니다.

  19. Wwise 메뉴에서 Project로 가서 Save를 선택하세요.

  20. SoundBank Manager에 접근할 수 있도록 SoundBank 레이아웃을 선택하고 Generate All을 클릭하세요.

  21. Unity Inspector에서 AkMicrophone 스크립트로 간 후 Microphone Event Property를 선택하세요.

  22. Events > Default Work Unit으로 가서 Enable_Microphone Event를 선택하세요.

    이제 Microphone Audio Input 설정이 끝났습니다. 다음으로 마이크 입력을 게임의 기능이나 메카닉(시스템)에 연결해야 합니다. 이 경우 플레이어의 공격에 해당합니다. 모험가는 세 단계로 이루어진 시퀀스로 무기를 휘둘러서 공격을 합니다. 무기의 Trigger 콜라이더가 다른 Trigger와 충돌하면 Player_WeaponImpact Event를 게시합니다. 그렇기 때문에 모험가가 무기를 휘두르는 것만 활성화시키면 됩니다. 이 동작은 PlayerAttack 스크립트에서 호출됩니다.

  23. AkMicrophone 컴포넌트에서 더하기 부호 (+) 를 클릭해서 목록에 아이템을 추가하세요.

  24. PlayerAttack 컴포넌트를 Object 프로퍼티 안으로 드래그하세요.

    이제 이 스크립트에 있는 모든 퍼블릭함수를 선택할 수 있지만 여기에서는 Swing() 함수를 사용하겠습니다.

  25. No Function 프로퍼티 드로어에서 PlayerAttack으로 가서 Swing()을 선택하세요.

    다 됐습니다! 게임에서 결과를 확인해봅시다.

  26. Play 모드에 들어가 상자가 있는 곳으로 가세요. 박수를 쳐서 플레이어가 무기를 휘둘러 공격하도록 해보세요.

[작은 정보]

혹시 오디오 입력이 끊긴다면 AkMicrophone의 Sample Rate나 Initial Read Delay in Samples 프로퍼티를 변경해보시기 바랍니다.

이제 플레이어가 Microphone 피크가 -48dB를 초과할 때 성공적으로 공격을 실행하게 되었습니다. OnMicrophoneAction() 목록에 다양한 함수를 추가하여 실험해보세요. AkMicrophone 스크립트는 Wwise를 사용하는 모든 Unity 프로젝트에서 재사용할 수 있도록 설계되었기 때문에 여러분이 작업하실 프로젝트에서 얼마든지 사용하실 수 있습니다.