3 개의 강의

목차

Trigger를 사용하여 SoundBank 로드하기

Wwise Adventure Game에서 게임 콘텐츠는 진행면(예: 활성화된 퀘스트)과 지역면(예: 사막이나 던전)으로 나눠집니다. 예를 들면, Player가 Woodlands에 있을 경우 Waterfall Event를 담은 SoundBank가 메모리에 로드되어 이벤트를 게시할 준비를 합니다. Player가 이 지역을 벗어나 Event가 멈추면 Waterfall Event를 담은 SoundBank가 메모리에서 언로드되면서 다른 SoundBank가 로드될 수 있는 메모리 공간이 생깁니다.

AkAudioListener가 Woodlands와 같은 지역 안에 들어감을 등록하고 싶을 때에는 Trigger를 사용하면 됩니다.

[작은 정보]

Trigger Collider에 대해 더 알아보고 싶으시다면 제 1강을 참조하시기 바랍니다.

Main Camera(AkAudioListener 컴포넌트가 있는 게임 오브젝트)에는 Sphere Trigger Collider가 있습니다. 이 Trigger Collider가 지역 Trigger Collider 안으로 들어가면 이 지역의 SoundBank가 AkBank 스크립트를 사용하여 로드됩니다. 다음 단계에서는 Cube Collider가 Is Trigger로 설정된 게임 오브젝트를 설정하고, AkBank 스크립트를 사용하여 Woodlands 지역용으로 만들어진 Woodlands Soundbank를 불러와보겠습니다.

  1. Unity 메뉴에서 Audiokinetic > Certification > 301 > Lesson 3으로 가서 Loading SoundBanks using Triggers를 선택하세요.

    Unity에서는 여러 가지 타입의 Collider가 제공됩니다. Woodlands 지역의 경우 Village 다리부터 Cave까지 지역을 감싸는 규모의 Box Trigger를 만들어봅시다. 먼저 Woodlands 영역이 보이도록 Scene 뷰를 조절해봅시다.

  2. Hierarchy에서 Waterfall 게임 오브젝트를 선택하고 Scene 안에 마우스 커서를 둔 상태에서 F를 클릭하세요.

  3. Unity 메뉴에서 GameObject > 3D Object로 간 후 Cube를 선택하세요.

    게임 오브젝트의 기능을 잘 묘사하는 이름을 지정해봅시다.

  4. Cube 게임 오브젝트를 우클릭하고 Rename을 선택한 후 'Woodlands Trigger'를 입력하세요.

    Cube 게임 오브젝트가 만들어지면 Box Collider가 게임 오브젝트에 자동으로 추가됩니다. Box Collider에는 Size (게임 오브젝트의 규모를 기준으로 한 상대적인 크기), Center(피봇점을 기준으로 한 상대적인 거리), 물리적인 Material (마찰과 같은 물리적 프로퍼티를 정의하는 데에 사용됨, 재질) 뿐만 아니라 Is Trigger 라는 프로퍼티 입력란이 있습니다. 이 Is Trigger 프로퍼티를 활성화하면 다른 Collider가 Collider 형태 안으로 들어갈 수 있습니다. (제 1강에서 자세히 설명되어 있음) Woodlands Trigger는 Player가 Collider 형태 안팎으로 드나들 수 있어야 하기 때문에 Trigger로 설정하겠습니다.

  5. Inspector에서 Box Collider를 찾아 Is Trigger를 활성화하세요.

    다른 Collider가 Box Collider 안으로 들어갈 수 있기 때문에 결국은 누군가가 Collider의 Mesh를 보이지 않게 만들어야 합니다. 일단 개발 도중이니 Trigger에 어떤 것들이 들어가는지 알 수 있게 안쪽이 비치도록 만들어봅시다. 미리 제작된 Trigger_Red 재질을 투명한 빨간색으로 설정해 보겠습니다. Trigger_Red는 Shader(모양과 색깔을 정의하는 데에 사용되는 코드)입니다.

  6. Project 뷰에서 Trigger_Red를 검색하세요.

  7. Project 창에서 Hierarchy에 있는 Woodlands Trigger 게임 오브젝트로 Trigger_Red Material을 드래그하세요.

    이제 Collider 외부가 투명한 빨간색으로 나타나는 것이 보이실 것입니다. 하지만 콜라이더 안에 있을 때에는 콜라이더의 모양을 볼 수가 없습니다.

    이제 Trigger Collider가 Woodlands의 영역에 맞게 Village부터 Cave 바로 앞까지 오도록 조정해봅시다. Move, Rotate, Scale 도구를 각각 사용해 보세요.

    [참고]

    'Move, Rotate, Scale'이 합쳐진 도구는 사용하지 않는 것이 좋습니다. 먼저 Move, Rotate, Scale 도구를 하나씩 익히는 것이 좋습니다.

    Scale 도구를 사용해서 게임 오브젝트의 크기를 늘리세요.

  8. Unity Toolbar에서 Scale 도구를 선택하세요.

  9. 상자가 Tree보다 더 커질 때까지 회색 중앙 상자를 오른쪽으로 드래그하세요.

  10. Move 도구, Rotate 도구, Scale 도구를 사용해서 Woodlands 지역 전체를 감싸도록 게임 오브젝트의 크기를 조정하세요.

    Collider가 Pine Forest의 일부분과 같은 인접한 영역을 포함해도 됩니다. 하지만 Village와 마주하고 있는 쪽은 다리의 일부보다 더 가지 않도록 하세요. 왜냐하면 이쯤에서 Village Trigger로 인해 Village SoundBank가 로드되며 Woodland SoundBank에 있는 모든 Event가 중단되기 때문입니다. 다음으로 AkBank 스크립트를 추가해서 Player가 Box Collider 안으로 들어갈 때 Woodlands SoundBank가 로드되도록 해봅시다.

  11. Woodlands Trigger 게임 오브젝트가 선택되었는지 확인한 후 Inspector에서 Add Component를 클릭하여 AkBank를 검색하고 스크립트를 선택하세요.

    이제 SoundBank를 지정해봅시다.

  12. Bank Name 프로퍼티에서 Banks > Default Work Unit > Region을 펼치고 Woodlands를 선택하세요.

    그리고 Woodlands를 AkTriggerEnter로 설정하여 또 다른 Trigger가 이 Trigger 안으로 들어오는지 감지하도록 해봅시다.

    [작은 정보]

    제 1강에서 설명해드린 것처럼 SoundBank를 로드하는 타이밍을 변경해야 할 경우에는 먼저 Nothing으로 설정한 다음 새로운 Load 옵션으로 설정해야 중복 설정되지 않습니다.

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

  14. Unload On 프로퍼티를 AkTriggerExit 만 남도록 설정하세요.

    이제 Woodlands SoundBank를 Collider 안으로 들어갈 때 로드하고 밖으로 나올 때 언로드할 수 있습니다. 하지만 아직 어떤 게임 오브젝트를 감지해야 하는지를 지정하지 않았네요. 그렇기 때문에 바닥 Collider와 Evil Crawler 등, Trigger 안팎으로 오가는 모든 오브젝트가 감지됩니다. 이 경우, 리스너(Main Camera)가 들어올 경우만 감지되어야 하기 때문에 AkTriggerEnter 스크립트를 추가해서 Trigger Object를 지정해야 합니다.

  15. Inspector에서 Add Component를 클릭한 후 AkTriggerEnter를 검색하여 선택하세요.

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

  17. Inspector에서 Add Component를 클릭하고 AkTriggerExit을 검색하여 선택하세요.

  18. Hierarchy에서 Main Camera 게임 오브젝트를 AkTriggerExit's Trigger Object 프로퍼티 안으로 드래그하세요.

    이제 Trigger를 드나들면서 SoundBank를 로드, 언로드하는 데에 필요한 모든 준비가 끝났습니다. 구현 결과는 항상 테스트를 거쳐야 하니, 게임을 실행해 프로파일러에 연결해보겠습니다.

  19. Wwise에서 Remote…를 클릭하세요.

  20. Remote Connections 창에서 Wwise Adventure Game (Editor)를 선택한 후 Connect를 클릭하세요.

  21. Unity에서 Play를 클릭하세요.

  22. Woodlands로 가세요.

  23. 다시 Play를 클릭하여 Play 모드를 종료하세요.

  24. Wwise 메뉴에서 Layouts으로 가서 Profiler를 선택하세요.

  25. Advanced Profiler의 Memory 탭에서 Woodlands SoundBank가 보일 때까지 시간 커서를 거꾸로 드래그하세요.

Woodlands 지역에 들어가자 마자 Woodlands SoundBank가 로드되는 것이 보입니다. 하지만 시간 커서를 왼쪽으로 더 드래그하면 Woodlands.bnk가 어느 순간 보이지 않습니다. 즉 플레이어가 Woodlands Trigger 안으로 들어갈 때 SoundBank가 로드되는 것이죠.


이 페이지가 도움이 되었나요?