2 개의 강의

목차

사용자 정의 볼류메트릭 스크립트

AkAmbient의 Simple, Large, MultiPosition 모드는 대부분의 환경음에서 잘 실행되지만 이 모드들은 모두 소리가 나는 지점에 기반합니다. 이는 소리의 위치가 Attenuation ShareSet의 볼륨 등에 영향을 준다는 것을 의미합니다. 이 경우 전체 영역에서 환경음의 볼륨이 일정하지 않아서 여러 다른 위치에서 계속해서 믹싱 레벨을 검토해야 하기 때문에 믹싱 작업이 힘들 수 있습니다. 이때 스크립트 작동 방식을 조정하면 도움이 되는데, Wwise Adventure Game의 환경음을 믹싱하기 위해서 저희는 EventPositionConfiner 스크립트를 만들었습니다.

EventPositionConfiner 스크립트는 연결된 Trigger Collider를 확인하며 AkListener의 위치에 따라 소리의 위치를 계속해서 조정하도록 설계되었습니다. 그렇게 해서 플레이어가 Trigger Collider 안에 있을 때마다 사운드의 Attenuation ShareSet가 0으로 설정되죠.

플레이어가 Trigger Collider 밖으로 나가면 리스너 게임 오브젝트에서 Trigger Collider의 가장 가까운 지점과의 거리에 따라 Attenuation 거리가 설정됩니다. 이렇게 Sound Position으로부터의 구형 감쇠는 Trigger Collider 메쉬와 비슷하며 끝 부분이 약간 둥그렇게 된 감쇠를 형성합니다.

[작은 정보]

EventPositionConfiner 스크립트는 Inspector에서 선언된 간격으로 소리의 위치를 업데이트합니다. 비슷한 스크립트를 제작하신다면 아주 빠른 위치 재지정 속도를 유지하고 (Main Camera / AkListener의 속도를 따라갈 수 있게) Attenuation ShareSet에서 근거리에 확산(spread)을 어느 정도 추가하세요 (소리의 위치가 빠르게 재지정되지 않을 경우 쉽게 알아차리지 않도록).

다음 단계에서는 Village의 River에 EventPositionConfiner를 추가해봅시다.

  1. Unity 메뉴에서 Audiokinetic > Certification > 301 > Lesson 2로 가서 EventPositionConfiner를 선택하세요.

  2. Hierarchy에서 L2_4B - Village Environment Scene으로 가서 Wwise를 펼치고 River 게임 오브젝트를 선택하세요.

  3. Inspector에서 Add Component를 클릭한 후 'EventPositionConfiner'를 검색하여 선택하세요.

    Inspector에 Event Position Confiner 컴포넌트가 보이실 것입니다. 이 안에는 두 가지 프로퍼티가 있습니다. Update Interval은 0.05로 유지하시고 Event는 Ambient_River Event로 설정하세요.

  4. Event Name 프로퍼티에서 Ambient_River Event를 선택하세요.

    이제 EventPositionConfiner 스크립트가 추가되었으며 River 사운드에 할당되었습니다. 작동 방식을 좀 더 이해해보기 위해서 Collider Shape 안에 있는 소리의 위치를 모니터링하면서 게임을 플레이해봅시다.

  5. Unity 메뉴에서 Window > Layouts으로 가서 2 by 3를 선택하세요.

    이 레이아웃에서는 Game 뷰 옆에 Scene 뷰가 배치되므로 Scene 뷰에서만 볼 수 있는 사운드의 위치를 게임을 플레이하면서 모니터링할 수 있습니다.

  6. Hierarchy에서 L2_4B - Village Environment Scene으로 가서 Wwise를 펼치고 River 게임 오브젝트를 선택하세요.

  7. Scene 뷰 안으로 마우스를 가져간 후 'F'를 눌러서 River 게임 오브젝트에 포커스를 맞추세요.

    이제 Scene 뷰에 River가 보이실 것입니다. 그리고 River를 둘러싸고 있는 초록색 선이 보이는데, 이 선은 Box Collider입니다. 스크롤 아웃하거나 카메라를 옮겨서 Trigger 콜라이더 전체가 보이게 하세요.

  8. Scene 뷰를 조정해서 Trigger 콜라이더 전체가 보이도록 하세요.

    이제 준비가 되었습니다! 게임을 플레이해서 작업한 내용을 시험해보는 것만 남았습니다.

    [작은 정보]

    Game 뷰에서 'Maximize On Play'를 반드시 비활성화하세요. 이 옵션은 기본적으로 비활성화되어 있지만 여러분이 편리함을 위해 활성화해두었을 수가 있습니다.

  9. Play를 클릭해서 Play 모드를 시작하세요.

    [참고]

    EventPositionConfiner 스크립트는 소리의 위치를 작은 파란색 구로 나타내도록 설계되었습니다. 카메라 아이콘이나 여러 다른 것들과 마찬가지로 이 구는 Game 뷰나 컴파일된 버전의 게임에서는 나타나지 않습니다.

  10. Main Camera를 회전시켜 Scene 뷰에서 작은 파란색 구를 찾아보세요.

    Camera가 Trigger 콜라이더 밖에 있을 경우 구는 가장 가까운 모서리와 맞춰집니다.

  11. Main Camera를 Trigger 안으로 옮겨보세요.

    이제 구가 Main Camera 바로 아래 있는 것이 보이실 것입니다 (카메라는 작은 카메라 아이콘으로 나타납니다).

  12. ESC를 눌러 WAG 메뉴를 연 후 Play를 다시 클릭해서 Play 모드를 종료하세요.

이렇게 AkListener (Main Camera에 추가된 것)가 Trigger 콜라이더 안에 있을 때에는 사운드는 계속해서 정중앙에 위치하게 됩니다. 그리고 Trigger 콜라이더 밖에 있을 때에는 Attenuation의 Distance 설정에 의해 거리에 따라 소리가 영향을 받습니다. EventPositionConfiner 스크립트는 모든 Collider (Convex로 설정되었을 경우 Mesh도 포함)에 사용할 수 있기 때문에 적용 범위가 아주 넓습니다.