ボリューム プロキシ コンポーネント を使用して、従来のオーディオ ゲームプレイ ボリューム オブジェクトを使わずに オーディオ ゲームプレイ ボリューム システムを操作できます。
このガイドでは、プリミティブ と 条件 の両方のプロキシ タイプを使用して動的ボリュームを作成する方法について説明します。
前提条件
-
新しい First Person テンプレート プロジェクトを作成します。
-
Audio Gameplay Volumes プラグイン を有効にするには、[Edit (編集)] > [Plugins (プラグイン)] を選択して、[Plugins] パネルの検索バーでこのプラグインを見つけ、該当するチェックボックスをオンにします。
1 - アンビエント ボリューム サウンド クラスを設定する
オーディオ ゲームプレイ ボリュームをサポートする、プロジェクト用の新しい サウンド クラス を作成して設定します。
-
新しいサウンド クラスを作成します。
-
コンテンツ ブラウザ の [Add (追加)] ボタンをクリックします。
-
[Audio (オーディオ)] > [Classes (クラス)] > [Sound Class (サウンド クラス)] の順に選択します。
-
新しく作成したアセットに「
AGV_SoundClass」などの名前を付けます。
-
-
サウンド クラスをダブルクリックして、サウンド クラス エディタ を開きます。
-
[Details (詳細)] パネルで以下を行います。
-
[Routing (ルーティング)] > [Apply Ambient Volumes (アンビエントボリュームを適用)] をオンにします。
-
[Submix (サブミックス)] > [Default 2DReverb Send Amount (デフォルトの 2DReverb 送信量)] を「1.0」に設定して保存します。
-
-
サウンド クラスをプロジェクトのデフォルトとして設定します。これにより、サウンド クラスのオーバーライドを指定しなくても、すべてのサウンド ソースに割り当てられます。
-
画面上部のメニューバーで、[Edit (編集)] > [Project Settings (プロジェクト設定)] の順にクリックして [Project Settings] を開きます。
-
検索バーに「Default Sound Class」と入力します。
-
[Audio] > [Default Sound Class (デフォルトのサウンド クラス)] の横にあるドロップダウンをクリックして、新しいサウンド クラスを選択します。
-
2 - Reverb コンポーネントを使用してブループリント アクタを作成する
追加するプロキシ コンポーネントのベースとして、次の手順で Reverb コンポーネントを使用する新しいブループリント アクタを作成します。
プロキシ コンポーネントは 任意の ブループリント アクタに追加できます。そのプロキシ アクタにアタッチされているオーディオ ゲームプレイ ボリューム コンポーネントは、従来のオーディオ ゲームプレイ ボリューム オブジェクト上にあるときと同じように機能します。
-
オーディオ ゲームプレイ ボリューム プロキシ用の新規ブループリント アクタを作成します。
-
コンテンツ ブラウザ の [Add] ボタンをクリックします。
-
ブループリント アクタ を選択します。
-
[Pick Parent Class (親クラスを選択)] ウィンドウで [Actor (アクタ)] を選択します。
-
新しく作成したアセットに「
AGV_Proxy」などの名前を付けます。
-
-
コンテンツ ブラウザ でプロキシ ブループリント クラスをダブルクリックして、ブループリント エディタ を開きます。
-
Reverb コンポーネントを追加します。
-
[Components (コンポーネント)] パネルで [Add] ボタンをクリックします。
-
検索バーに「Reverb」と入力し、Enter キーを押します。
-
-
新しい Reverb コンポーネント (デフォルトでは「
ReverbVolume」という名前が付いています) を選択します。 -
[Details] パネルで Reverb コンポーネントのプロパティを調整します。
-
[Reverb (リバーブ)] > [Volume (ボリューム)] を「1.0」に設定します。
-
[Reverb] > [Fade Time (フェード時間)] を「0.0」に設定します。
-
[Reverb] > [Reverb Effect (リバーブ エフェクト)] の横にあるドロップダウンをクリックします。[Create New Asset (新規アセットを作成)] 見出しの下にある [Reverb Effect] を選択します。
-
新しいリバーブ エフェクトに「
AGV_Reverb」などの名前を付けて保存します。
-
-
リバーブ エフェクトを変更します。
-
[Reverb] > [Reverb Effect] の横にあるアイコンをダブルクリックして、リバーブ エフェクト エディタ を開きます。
-
エフェクトを聞き取りやすくするため、[Late Reflections (後の反射)] > [Gain (ゲイン)] を「1.0」に設定します。
-
リバーブ エフェクトを保存して、リバーブ エフェクト エディタを閉じます。
-
3 - プリミティブ プロキシを構築する
プリミティブ プロキシ は、コリジョンの基準としてアクタのプリミティブ スタティックメッシュを使い、開始イベントや終了イベントをトリガーします。
3A - プリミティブ プロキシ コンポーネントを追加する
基本のボリューム プロキシ コンポーネントを追加して、タイプをプリミティブに設定します。
-
ボリューム プロキシ コンポーネントを追加します。
-
[Components] パネルで [Add] ボタンをクリックします。
-
検索バーに「Volume Proxy」と入力し、Enter キーを押します。
-
コンポーネントの名前を「
PrimitiveProxy」にします。
-
-
PrimitiveProxy コンポーネントを選択します。
-
[Details] パネルで、[Audio Gameplay (オーディオ ゲームプレイ)] > [Proxy (プロキシ)] を [AGV Primitive Proxy (AGV プリミティブ プロキシ)] に設定します。
3B - スタティックメッシュ コンポーネントを追加する
スタティックメッシュを追加してコリジョンを設定すると、開始および終了できるようになります。
プリミティブ プロキシは現在、複数のスタティックメッシュ コンポーネントを備えたアクタをサポートしていません。そのようなアクタを使用すると、アウトプット ログに警告が表示されます。
-
スタティックメッシュ コンポーネントを追加します。
-
[Components] パネルで [Add] ボタンをクリックします。
-
検索バーに「Static Mesh」と入力し、リストから「Sphere (球体)」など、基本的な形状のいずれかを選択します。
-
-
スタティックメッシュ コンポーネントを選択します。
-
[Details] パネルで Collision パラメータを設定します。
-
[Collision] > [Generate Overlap Events (オーバーラップ イベントを生成)] をオフにします。
-
[Collision] > [Can Character Step Up On (キャラクターが上に登ることができる)] を [No (いいえ)] に設定します。
-
[Collision] > [Presets (プリセット)] を [Custom (カスタム)] に設定します。
-
[Collision] > [Collision Presets (コリジョン プリセット)] > [Collision Responses (コリジョン反応)] にある [Overlap (オーバーラップ)] をオンにします。これにより、すべての応答型に対して Overlap が選択されます。
-
-
ブループリントを保存します。
3C - レベルにプロキシ アクタを配置する
-
プロキシ アクタを コンテンツ ブラウザ から レベル にドラッグして配置します。
-
トランスフォーム ウィジェットを使用して、キャラクターが出たり入ったりできるようにアクタを配置します。
3D - レベル ブループリントを構築する
ブループリント グラフを構築し、マウスのホイール入力を使用してプロキシ アクタのスケールを制御します。
-
レベルでプロキシ アクタを選択します。
-
レベル エディタのツールバー で [Blueprint (ブループリント)] ボタンをクリックし、[Open Level Blueprint (レベル ブループリントを開く)] を選択します。
-
空白の領域を右クリックして、プロキシ アクタへの 参照を作成 します。
-
Actor Reference ノードで、出力ピンから引き出して Get Actor Scale 3D ノードを作成します。
-
Get Actor Scale 3D ノードで、Return Value ピンから引き出して Add ノードと Subtract ノードを作成します。
-
Add ノードと Subtract ノードの両方で、下部にある X、Y、および Z に「1.0」を入力します。
-
Actor Reference ノードで、出力ピンから引き出して Set Actor Scale 3D ノードを 2 つ作成します。
-
Add ノードの出力ピンから引き出して Set Actor Scale 3D ノードの 1 つに接続します。
-
同じ Set Actor Scale 3D ノードの Exec Input (>) ピンから引き出して、Mouse Wheel Up ノードを作成します。
-
Subtract ノードの出力ピンから引き出して、もう一方の Set Actor Scale 3D ノードに接続します。
-
同じ Set Actor Scale 3D ノードの Exec Input (>) ピンから引き出して、Mouse Wheel Down ノードを作成します。
3E - レベルをテストする
レベル エディタのツールバー で [Play (プレイ)] ボタンをクリックし、ライフルまで移動して手に取り、左クリックで撃ちます。マウスのホイールを使用して、プロキシのスケールを変更できます。
オーディオ ゲームプレイ ボリューム プロキシの内側や外側に移動して、ライフルの発射音にどのような影響があるのかを確認します。リバーブ エフェクトは動的にサイズ変更されたプロキシ内にも適用されます。
4 - 条件プロキシを構築する
条件プロキシ は、オーディオ ゲームプレイ条件 インターフェースを介して、ブループリントで指定されている条件に基づいて開始イベントや終了イベントをトリガーします。
4A - 条件プロキシ コンポーネントおよびインターフェースを追加する
基本のボリューム プロキシ コンポーネントを追加して、タイプを条件に設定します。
-
コンテンツ ブラウザ でプロキシ ブループリント クラスをダブルクリックして、ブループリント エディタ を開きます。
-
ボリューム プロキシ コンポーネントを追加します。
-
[Components] パネルで [Add] ボタンをクリックします。
-
検索バーに「Volume Proxy」と入力し、Enter キーを押します。
-
コンポーネントの名前を「
ConditionProxy」にします。
-
-
ConditionProxy コンポーネントを選択します。
-
[Details] パネルで、[Audio Gameplay] > [Proxy] を [AGV Condition Proxy (AGV 条件プロキシ)] に設定します。
4B - オーディオ ゲームプレイ条件インターフェースを追加する
ブループリントで条件を構築できるように、オーディオ ゲームプレイ条件インターフェースを追加します。これにより、Condition Met と Condition Met Position という 2 つの新しいインターフェースが追加されます。
-
ブループリント エディタのツールバー で、[Class Settings (クラス設定)] をクリックします。
-
[Interfaces (インターフェース)] > [Implemented Interfaces (実装済みのインターフェース)] の [Add] ドロップダウンをクリックします。
-
検索バーに「AudioGameplayCondition」と入力し、Enter キーを押します。
4C - Condition Met インターフェースを構築する
Condition Met インターフェースは、結果がブール値になる条件を設定するために使用されます。これを使用すると、ボリュームの内側と外側を定義する独自のカスタム仕様の基準を作成できます。
ブループリントで Shift キーの状態チェックを構築し、Condition Met インターフェースを制御します。
-
[My Blueprint (マイ ブループリント)] パネルの [Interfaces] > [Audio Gameplay Condition (オーディオ ゲームプレイ条件)] で、Condition Met インターフェースをダブルクリックします。
-
Return ノード で、Return Value 入力ピンから引き出して Is Shift Down ノードを作成します。
-
Is Shift Down ノードで、Keys State 入力ピンから引き出して Get Modifier Keys State ノードを作成します。
4D - Condition Met Position インターフェースを構築する
Condition Met Position インターフェースは Condition Met インターフェースに似ていますが、カスタム仕様の条件内で使用するリスナーの位置にアクセスできます。
ブループリントでリスナーの高さチェックを構築し、Condition Met Position インターフェースを制御します。
-
[My Blueprint] パネルの [Interfaces] > [Audio Gameplay Condition] で、Condition Met Position インターフェースをダブルクリックします。
-
Condition Met Position ノードで、Position 出力ピンから引き出して Break Vector 3f ノードを作成します。
-
Break Vector 3f ノードで、Z 出力ピンから引き出して Greater ノードを作成します。
-
Greater ノードで以下を行います。
-
下の入力の値を「350.0」にします。
-
出力ピンを Return ノード に接続します。
-
-
ブループリントを保存します。
4E - レベルをテストする
レベル エディタのツールバー にある [Play (プレイ)] ボタンをクリックし、ライフルの発射音をテストします。プロキシのリバーブ エフェクトは、Shift キーを押したとき、またはプラットフォームの上で射撃したときに適用されます。
5 - 応用編
基本的なボリューム プロキシの作成が完了したので、さらに応用してみましょう。いくつかの提案をご紹介します。
-
カスタム仕様のトリガーを追加ましたが、ブループリントの On Proxy Enter イベント ノードと On Proxy Exit イベント ノードを使用して、カスタム仕様のレスポンスも追加できます。作成するには、イベントのターゲット ボリューム プロキシ コンポーネントを選択して イベント グラフ の空白の領域で右クリックし、On Proxy イベント ノードを追加します。
-
デフォルトでは、カメラがリスナーとみなされ、開始イベントおよび終了イベントを決定するために使用されます。サードパーソン カメラでは、代わりにプレイヤー キャラクターをリスナーにする場合があります。条件プロキシを使用して、Third Person テンプレート プロジェクトのデフォルト ボリューム コリジョンをオーバーライドしてみてください。