볼륨 프록시(Volume Proxy) 컴포넌트 를 사용하면 기존 오디오 게임플레이 볼륨 오브젝트 없이도 오디오 게임플레이 볼륨(Audio Gameplay Volume) 시스템과 인터랙션할 수 있습니다.
이 가이드에서는 프리미티브 및 조건 이라는 두 가지 프록시 타입을 모두 사용하여 다이내믹 볼륨을 생성하는 방법을 살펴봅니다.
전제 조건
-
새로운 일인칭 템플릿 프로젝트를 생성합니다.
-
편집(Edit) > 플러그인(Plugins) 을 선택하고, 검색창에서 플러그인을 찾은 후 해당 체크박스를 클릭하여 플러그인 패널에서 오디오 게임플레이 볼륨 플러그인을 활성화합니다.
1 - 앰비언트 볼륨 사운드 클래스 구성
오디오 게임플레이 볼륨을 지원하도록 프로젝트에서 새 사운드 클래스 를 생성하여 환경설정합니다.
-
새 사운드 클래스를 생성합니다.
-
콘텐츠 브라우저(Content Browser) 에서 추가(Add) 버튼을 클릭합니다.
-
오디오(Audio) > 클래스(Classes) > 사운드 클래스(Sound Class) 를 선택합니다.
-
새로 생성한 에셋의 이름을
AGV_SoundClass와 같이 짓습니다.
-
-
해당 사운드 클래스를 더블클릭하여 사운드 클래스 에디터(Sound Class Editor) 를 엽니다.
-
디테일(Details) 패널에서 다음을 수행합니다.
-
라우팅(Routing) > 앰비언트 볼륨 적용(Apply Ambient Volumes) 을 활성화합니다.
-
서브믹스(Submix) > 디폴트 2D 리버브 전송량(Default 2DReverb Send Amount) 을 1.0으로 설정하고 저장합니다.
-
-
해당 사운드 클래스를 프로젝트 디폴트 값으로 설정합니다. 그러면 특정 사운드 클래스 오버라이드 없이 모든 사운드 소스에 할당됩니다.
-
상단 메뉴 바에서 편집 > 프로젝트 세팅(Project Settings) 을 클릭하여 프로젝트 세팅 을 엽니다.
-
검색창에 'Default Sound Class'를 입력합니다.
-
오디오 > 디폴트 사운드 클래스(Default Sound Class) 옆의 드롭다운을 클릭하고 새 사운드 클래스를 선택합니다.
-
2 - 리버브 컴포넌트를 사용하여 블루프린트 액터 생성
다음 단계에서 추가할 프록시 컴포넌트의 베이스로 리버브 컴포넌트를 사용하여 새 블루프린트 액터를 생성합니다.
모든 블루프린트 액터에 프록시 컴포넌트를 추가할 수 있습니다. 프록시 액터에 어태치된 오디오 게임플레이 볼륨 컴포넌트는 기존 오디오 게임플레이 볼륨 오브젝트에서와 동일하게 작동합니다.
-
오디오 게임플레이 볼륨 프록시에 대해 새 블루프린트 액터를 생성합니다.
-
콘텐츠 브라우저 에서 추가 버튼을 클릭합니다.
-
블루프린트 클래스(Blueprint Class) 를 선택합니다.
-
부모 클래스 선택(Pick Parent Class) 창에서 액터(Actor) 를 선택합니다.
-
새로 생성한 에셋의 이름을
AGV_Proxy와 같이 짓습니다.
-
-
콘텐츠 브라우저 에서 프록시 블루프린트 클래스를 더블클릭하여 블루프린트 에디터(Blueprint Editor) 를 엽니다.
-
리버브 컴포넌트를 추가합니다.
-
컴포넌트(Components) 패널에서 추가 버튼을 클릭합니다.
-
검색창에 'Reverb'를 입력하고 Enter 키를 누릅니다.
-
-
새 리버브 컴포넌트를 선택합니다. 기본적으로 이름은
ReverbVolume입니다. -
디테일 패널에서 리버브 컴포넌트의 프로퍼티를 조정합니다.
-
리버브(Reverb) > 볼륨(Volume) 을 1.0으로 설정합니다.
-
리버브 > 페이드 시간(Fade Time) 을 0.0으로 설정합니다.
-
리버브 > 리버브 이펙트(Reverb Effect) 옆의 드롭다운을 클릭합니다. '새 에셋 생성(Create New Asset)' 아래에서 리버브 이펙트 를 선택합니다.
-
새 리버브 이펙트의 이름을
AGV_Reverb와 같이 짓고 저장합니다.
-
-
리버브 이펙트를 수정합니다.
-
리버브 > 리버브 이펙트 옆에 있는 아이콘을 더블클릭하여 리버브 이펙트 에디터(Reverb Effect Editor) 를 엽니다.
-
지연 리플렉션(Late Reflections) > 게인(Gain) 을 1.0으로 설정하여 이펙트가 더 쉽게 들리게 합니다.
-
리버브 이펙트를 저장하고 리버브 이펙트 에디터를 닫습니다.
-
3 - 프리미티브 프록시 생성
프리미티브 프록시(Primitive Proxy) 는 액터에서 프리미티브 스태틱 메시 진입 및 나가기 이벤트를 트리거하기 위한 콜리전의 기초로 사용합니다.
3A - 프리미티브 프록시 컴포넌트 추가
베이스 볼륨 프록시 컴포넌트를 추가하고 타입을 '프리미티브(Primitive)'로 설정합니다.
-
볼륨 프록시 컴포넌트를 추가합니다.
-
컴포넌트 패널에서 추가 버튼을 클릭합니다.
-
검색창에 'Volume Proxy'를 입력하고 Enter 키를 누릅니다.
-
컴포넌트의 이름을
PrimitiveProxy로 짓습니다.
-
-
프리미티브 프록시 컴포넌트를 선택합니다.
-
디테일 패널에서 오디오 게임플레이(Audio Gameplay) > 프록시(Proxy) 를 'AGV 프리미티브 프록시(AGV Primitive Proxy)'로 설정합니다.
3B - 스태틱 메시 컴포넌트 추가
스태틱 메시를 추가한 후 진입하고 나갈 수 있도록 콜리전을 환경설정합니다.
프리미티브 프록시는 현재 여러 스태틱 메시 컴포넌트가 포함된 액터를 지원하지 않습니다. 이러한 액터를 사용하는 경우 '출력 로그(Output Log)'에 경고가 표시됩니다.
-
모든 스태틱 메시 컴포넌트를 추가합니다.
-
컴포넌트 패널에서 추가 버튼을 클릭합니다.
-
검색창에 'Static Mesh'를 입력하고 목록에서 스피어와 같은 기본 셰이프 중 하나를 선택합니다.
-
-
스태틱 메시 컴포넌트를 선택합니다.
-
디테일 패널에서 콜리전 파라미터를 설정합니다.
-
콜리전(Collision) > 오버랩 이벤트 생성(Generate Overlap Events) 을 비활성화합니다.
-
콜리전 > Can Character Step Up On 을 '아니오(No)'로 설정합니다.
-
콜리전 > 프리셋(Presets) 을 '커스텀(Custom)'으로 설정합니다.
-
콜리전 > 콜리전 프리셋(Collision Presets) > 콜리전 응답(Collision Responses) 에서 오버랩(Overlap) 을 선택합니다. 그러면 모든 응답 타입에 대해 오버랩이 선택됩니다.
-
-
블루프린트를 저장합니다.
3C - 레벨에 프록시 액터 배치
-
콘텐츠 브라우저 에서 레벨 로 드래그하여 프록시 액터를 배치합니다.
-
캐릭터가 내부 및 외부로 이동할 수 있도록 트랜스폼 위젯을 사용하여 액터를 배치합니다.
3D - 레벨 블루프린트 빌드
'블루프린트 그래프(Blueprint Graph)'를 빌드하여 마우스 휠 입력으로 프록시 액터 스케일을 제어합니다.
-
레벨에서 프록시 액터를 선택합니다.
-
레벨 에디터(Level Editor) 툴바에서 블루프린트(Blueprint) 버튼을 클릭하고 레벨 블루프린트 열기(Open Level Blueprint) 를 선택합니다.
-
빈 공간을 우클릭하고 해당 프록시 액터에 대한 레퍼런스 생성(Create a Reference) 를 선택합니다.
-
Actor Reference 노드의 출력 핀에서 드래그하여 Get Actor Scale 3D 노드를 생성합니다.
-
Get Actor Scale 3D 노드의 반환 값(Return Value) 핀에서 드래그하여Add 및 Subtract 노드를 생성합니다.
-
Add 및 Subtract 노드 모두에서 하단 입력의 X, Y 및 Z에 1.0을 입력합니다.
-
Actor Reference 노드의 출력 핀에서 드래그하여 2개의 Set Actor Scale 3D 노드를 생성합니다.
-
Add 노드의 출력을 Set Actor Scale 3D 노드 중 하나에 연결합니다.
-
동일한 Set Actor Scale 3D 노드에서 실행 입력(Exec Input) (>) 핀을 드래그하여 Mouse Wheel Up(Mouse Wheel Up) 노드를 생성합니다.
-
Subtract 노드의 출력을 다른 Set Actor Scale 3D 노드에 연결합니다.
-
동일한 Set Actor Scale 3D 노드에서 실행 입력 (>) 핀을 드래그하여 Mouse Wheel Down 노드를 생성합니다.
3E - 레벨 테스트
레벨 에디터 툴바에서 플레이(Play) 버튼을 클릭하고 이동해서 소총을 집어 들고 왼쪽 클릭으로 발사합니다. 마우스 휠을 사용하여 프록시의 스케일을 조절할 수 있습니다.
오디오 게임플레이 볼륨 프록시 내부 및 외부로 이동하여 소총 발사 사운드에 어떻게 영향을 미치는지 확인합니다. 리버브 이펙트는 다이내믹하게 크기가 조절된 프록시 내에서 계속 적용됩니다.
4 - 조건 프록시 생성
조건 프록시(Condition Proxy) 는 오디오 게임플레이 조건(Audio Gameplay Condition) 인터페이스를 통해 블루프린트에 지정된 조건을 기반으로 진입 및 나가기 이벤트를 트리거합니다.
4A - 조건 프록시 컴포넌트 및 인터페이스 추가
베이스 볼륨 프록시 컴포넌트를 추가하고 타입을 '조건(Condition)'으로 설정합니다.
-
콘텐츠 브라우저 에서 프록시 블루프린트 클래스를 더블클릭하여 블루프린트 에디터 를 엽니다.
-
볼륨 프록시 컴포넌트를 추가합니다.
-
컴포넌트 패널에서 추가 버튼을 클릭합니다.
-
검색창에 'Volume Proxy'를 입력하고 Enter 키를 누릅니다.
-
컴포넌트의 이름을
ConditionProxy로 짓습니다.
-
-
조건 프록시 컴포넌트를 선택합니다.
-
디테일 패널에서 오디오 게임플레이 > 프록시 를 'AGV 조건 프록시(AGV Condition Proxy)'로 설정합니다.
4B - 오디오 게임플레이 조건 인터페이스 추가
블루프린트에서 조건을 빌드할 수 있도록 오디오 게임플레이 조건 인터페이스를 추가합니다. 그러면 조건 충족(Condition Met) 및 조건 충족 위치(Condition Met Position) 라는 2개의 새 인터페이스가 추가됩니다.
-
블루프린트 에디터 툴바에서 클래스 세팅(Class Settings) 을 클릭합니다.
-
인터페이스(Interfaces) > 구현된 인터페이스(Implemented Interfaces) 에 대해 추가 드롭다운을 클릭합니다.
-
검색창에 'AudioGameplayCondition'을 입력하고 Enter 키를 누릅니다.
4C - 조건 충족 인터페이스 빌드
조건 충족 인터페이스는 부울 값을 가져오는 모든 조건을 구성하는 데 사용됩니다. 이를 통해 볼륨 내부 또는 외부를 정의하는 항목에 대한 커스텀 기준을 만들 수 있습니다.
조건 충족 인터페이스를 구동하기 위해 블루프린트에서 Shift 키 상태 검사를 생성합니다.
-
내 블루프린트(My Blueprint) 패널의 인터페이스 > 오디오 게임플레이 조건(Audio Gameplay Condition) 아래에서 조건 충족 인터페이스를 더블클릭합니다.
-
Return 노드의 반환 값 입력 핀에서 드래그하여 Is Shift Down 노드를 생성합니다.
-
Is Shift Down 노드의 키 상태(Keys State) 입력 핀에서 드래그하여 Get Modifier Keys State 노드를 생성합니다.
4D - 조건 충족 조건 인터페이스 빌드
조건 충족 위치 인터페이스는 조건 충족 인터페이스와 비슷하지만 커스텀 조건 내에서 사용하도록 리스너 위치에 액세스할 수 있습니다.
조건 충족 위치 인터페이스를 구동하기 위해 블루프린트에서 리스너 높이 검사를 생성합니다.
-
내 블루프린트 패널의 인터페이스 > 오디오 게임플레이 조건 아래에서 조건 충족 위치 인터페이스를 더블클릭합니다.
-
Condition Met Position 노드의 위치(Position) 출력 핀에서 드래그하여 Break Vector 3f 노드를 생성합니다.
-
Break Vector 3f 노드의 Z 출력 핀에서 드래그하여 Greater 노드를 생성합니다.
-
Greater 노드에서 다음을 수행합니다.
-
하단 입력에 350.0을 입력합니다.
-
출력 핀을 Return 노드에 연결합니다.
-
-
블루프린트를 저장합니다.
4E - 레벨 테스트
레벨 에디터 툴바에서 플레이 버튼을 클릭하고 소총 발사 사운드를 테스트합니다. 프록시의 리버브 이펙트는 Shift를 누른 상태 또는 플랫폼 위에서 발사할 때 적용됩니다.
5 - 직접 해보기!
이제 기본 볼륨 프록시를 생성하는 작업이 완료되었으므로, 이를 더 확장할 수 있습니다. 다음은 사용자가 직접 탐색해볼 수 있는 몇 가지 제안 사항입니다.
-
커스텀 트리거를 추가했지만 블루프린트에서 On Proxy Enter 및 On Proxy Exit 이벤트 노드를 사용하여 커스텀 응답을 추가할 수도 있습니다. 이를 생성하려면 이벤트에 대해 타깃 볼륨 프록시 컴포넌트를 선택하고 이벤트 그래프(Event Graph) 에서 빈 공간을 우클릭한 후 On Proxy 이벤트 노드를 추가합니다.
-
기본적으로 카메라는 리스너로 간주되며, 진입 및 나가기 이벤트를 결정하는 데 사용됩니다. 삼인칭 카메라를 사용하는 경우에는 대신 리스너를 플레이어 캐릭터로 지정할 수 있습니다. 조건 프록시를 사용하여 삼인칭 템플릿 프로젝트에서 디폴트 볼륨 콜리전을 오버라이드해보세요.