5 개의 강의

목차

AkState 컴포넌트를 사용해서 State 설정하기

Event 게시와 마찬가지로 State도 컴포넌트나 스크립트를 사용하여 설정할 수 있습니다. 미리 제작된 컴포넌트는 State를 쉽고 빠르게 설정할 수 있게 해주지만 스크립트를 작성하면 제어력이 높아지기 때문에, 두 가지 방법 모두 게임 사운드 통합에 아주 중요합니다.

Wwise Unity Integration을 사용하면 미리 제작된 AkState 스크립트로 State 설정을 할 수 있습니다. AkState는 사용하기가 꽤 쉬울 뿐만 아니라 Trigger On 옵션을 사용하면 대부분의 일반적 상황에 맞는 State 변화를 매우 빠르게 설정할 수 있습니다. 다음 단계에서는 Player가 Village에 있는 MusicRegion_WwizardMagicHouse Trigger 안으로 들어갈 때 MagicZone State를 설정하는 방법을 익혀보겠습니다. 이 State가 변경되면 Master Audio Bus에 효과가 적용되어 Player가 Wwizard의 집 안으로 들어갔을 때 소리 풍경 전체에 Wwise Flanger가 적용되고 피치가 바뀝니다.

  1. Unity 메뉴에서 Audiokinetic > Certification > 301 > Lesson 5로 가서 Setting States using the AkState Component를 선택하세요.

  2. Hierarchy에서 Wwise > Music Zones을 펼치고 MusicRegion_WwizardMagicHouse를 선택하세요.

    Wwizard House에 집의 내부 규모를 나타내는 초록색 선이 보이실 것입니다. 이 선은 MusicRegion_WwizardMagicHouse Trigger으로, 이 곳에 AkState를 연결할 것입니다.

  3. [참고]

    초록색 선이 보이지 않으실 경우 Inspector에서 Mesh Collider 컴포넌트가 펼쳐졌는지 확인하시기 바랍니다.

  4. Inspector에서 Add Component를 클릭하고 AkState를 검색하여 선택하세요.

    먼저 State를 선택합시다.

  5. AkState Component의 State Name 프로퍼티에서 States > MusicStates > MagicZone을 펼치고 MZ2_InsideHouse State를 선택하여 더블 클릭하세요.

    Trigger On 옵션이 호출되면 AkState 컴포넌트가 지정된 State를 설정합니다. Trigger를 사용해서 Player가 Wwizard House 안으로 들어가는 것을 감지하게 할 것이기 때문에 AkTriggerEnter 조건이 필요합니다.

    [작은 정보]

    Trigger On 프로퍼티에서는 다양한 조건을 선택할 수 있기 때문에 단 하나의 조건만 선택하려면 먼저 Nothing을 선택한 후 새롭게 Trigger On 조건을 선택해야 합니다.

  6. Trigger On 프로퍼티를 AkTriggerEnter만 남도록 설정하세요.

    제 1강에서 AkTriggerEnter를 사용하여 Player가 Coin을 획득하는 것을 지정한 것과 같이, Trigger가 주시해야 하는 게임 오브젝트를 선언해야 합니다. 그러기 위해서는 AkTriggerEnter 스크립트를 MusicRegion_WwizardMagicHouse Trigger에 추가하고 Player를 여기에 할당해야 합니다.

  7. Add Component를 클릭하고 AkTriggerEnter를 검색해서 선택하세요.

  8. Hierarchy에서 Player 게임 오브젝트를 AkTriggerEnter의 Trigger Object 프로퍼티로 드래그하세요.

    Trigger 안으로 들어가면 MagicZone State가 Inside로 설정되어 MagicZone 효과가 게임 전체 사운드에 적용됩니다. 이제 Trigger 안으로 들어갈 때 MagicZone State를 설정하도록 했지만 Trigger 밖으로 나갈 때도 State가 복구되어야 합니다. 먼저 또 다른 AkState를 추가합시다.

  9. Inspector에서 Add Component를 클릭하고 AkState를 검색해서 추가하세요.

    또 다른 Collider가 존재하는지 감지하기 위해서 AkTriggerExit 옵션을 사용하면 됩니다.

  10. AkState Trigger On 프로퍼티를 AkTriggerExit만 남도록 설정하세요.

  11. AkState의 State Name에서 MagicZone을 펼치고 MZ1_OutsideHouse State를 선택하여 더블 클릭하세요.

    AkTriggerEnter가 Player를 감지하는 데에 AkTriggerEnter 스크립트만 필요한 것처럼 AkTriggerExit 스크립트도 해당 Trigger On 옵션을 사용하기 때문에 AkTriggerExit 스크립트를 추가해야 합니다.

  12. Add component를 선택하고 AkTriggerExit 컴포넌트를 검색해서 선택하세요.

  13. Hierarchy에서 Player 게임 오브젝트를 AkTriggerExit의 Trigger Object 프로퍼티로 드래그하세요.

    이제 게임을 실행해서 음악, 환경음, 상호작용 사운드가 어떻게 변화하는지 들어봅시다.

  14. Play 모드를 시작하고 Wwizard House 안으로 들어가세요.

    Wwizard House 안에서 모든 사운드가 바뀌는 것을 들어보세요. 칼을 여러 번 휘둘러보면서 모험가 캐릭터의 목소리 피치가 약간씩 변경되는 것을 들어보세요.

  15. Wwizard House에서 밖으로 나가세요.

    집 밖으로 나가면 소리풍경이 다시 복구되어서 Master Audio Bus에 Flanger 효과가 적용되지 않으며 공격 시 모험가 음성의 피치가 더 이상 변조되지 않습니다. 이렇게 하면 Player가 Wwizard House 안팎으로 드나들면서 소리풍경이 동적으로 변화합니다. Play를 다시 클릭하고 Play 모드종료하세요.

다 됐습니다! 이제 Player가 MusicRegion_WwizardMagicHouse 안팎으로 들나들 때마다 MusicZone State가 변경됩니다. 이렇게 AkState 컴포넌트는 State를 아주 빠르게 변경할 수 있게 해주며 AkTriggerEnter와 AkTriggerExit 스크립트를 함께 사용하면 반응시키고자 하는 게임 오브젝트를 정확하게 지정할 수 있습니다.

[참고]

Unity에서는 AkSwitch 스크립트를 설정하는 과정과 동일한 방법으로 Switch를 설정할 수 있습니다.