LoginSignup
2
1

More than 3 years have passed since last update.

ゲームの状況に合わせて効果音にバリエーションを by ADX2 for UE4

Last updated at Posted at 2020-01-22

はじめに

アンリアルエンジン4と、サウンドミドルウェア「ADX2 for UE4」を連携させ、
同じ現象でもゲームの状況に応じて異なる効果音が再生されるようにします。
UE4.23+「ADX2 LE v2.10.05」を使用します。

AtomCraftで使用できる「セレクタ」を使い、ひとつのサウンドデータに様々な音を内包します。
I01.png
2段ジャンプできるキャラクターが、地上でジャンプしたのか、空中でジャンプしたのかによって音を分岐させています。
2種類の音が鳴りますが、アセット上のファイルはひとつにまとまっています。

前提

「ADX2 for UE4 LE」を使用します。導入や簡単な使い方は以下の記事にあります。
ADX2 for UE4の導入で、一歩上のサウンド表現を(導入編)
https://qiita.com/SigRem/items/4250925f6d66a4fd287a
ADX2 for UE4の導入で、一歩上のサウンド表現を(実践編)
https://qiita.com/SigRem/items/c089b71c42e898980a46

やること

  • AtomCraftで複数のサウンドを持つスイッチキューを作成
  • UE4にインポート
  • ブループリントでアクションによるラベルの分岐
  • テストプレイ

実装

AtomCraftで複数のサウンドを持つキューを作成

素材を用意

AtomCraftのマテリアルツリーにサウンド素材をインポートします。
A01.png
サンプルとして、地上用のジャンプ用に「NormalJump」、空中ジャンプ用に「SpecialJump」をインポートしています。

キューの作成

Atom Cueを作成します。
作成時には「スイッチ」を選びます。
A02.png
このタイプのAtom Cueは、「セレクタ」及び「セレクタラベル」という値をゲーム中に受け取り、それに応じたトラックを再生するものです。
I03.png

2種類以上のサウンドを用意し、それぞれ違うトラックに入れます。
A03.png
上のトラックは地上でジャンプしたときの、下のトラックは空中でジャンプしたときの音になります。
分かりやすいようにトラックをリネームします。
A04.png

セレクターラベルの設定

必要に応じたトラックを再生するため、セレクター及びセレクターラベルを作成します。
プロジェクトツリーの「セレクタフォルダ」を右クリックし、「新規オブジェクト」→「セレクタの作成」を選びます。
A05.png
作成したセレクタをリネームし、分かりやすいものに変えます。ここでは「Action」としました。
A06.png

さらにセレクタを右クリックし、「新規オブジェクト」→「セレクタラベル」でラベルを作ります。
A07.png
セレクタラベルの名前を設定するウィンドウが開くので、適当な名前をつけます。
A08.png
2つのセレクタラベルを作り、それぞれ「Action_Ground」「Action_Air」としました。
A09.png

これでセレクター「Action」内に「Action_Ground」「Action_Air」というセレクタラベルが用意されました。
ゲームの実行中、地上ならば「Action_Ground」を、空中なら「Action_Air」のラベルを渡し、違った音を再生させます。

キュー側の設定

準備したセレクターをキューに設定します。
「ワークユニットツリー」にて、スイッチタイプのキューが選択されていることを確認します。
A10.png
インスペクタ下部の「スイッチ」をクリックします。
A11.png
「スイッチ変数」から先ほど設定したセレクタが参照できるので、セレクタフォルダ「Action」を選びます。
A12.png
セレクタフォルダ下のセレクタラベルも表示されます。
A13.png
対応したトラックに、任意のセレクタラベルを設定します。
A14.png

キューシートのエクスポート

通常通り、キューシートをエクスポートします。
A15.png
A16.png

これでAtomCraft側の作業は完了です。

UE4での実装

キューシートをインポート

AtomCraftからエクスポートしたファイルをインポートします。
B01.png
プロジェクト設定を開き、「CriWare」タブから~~に新しいAtom Configファイルを設定するのをお忘れなく。
B02.png

キャラクターの空中ジャンプを可能にする

UE4デフォルトのキャラクターが空中ジャンプ可能になるよう変更します。
「Content」→「ThirdPersonCPP」→「Blueprints」にある「ThirdPersonCharacter」を開きます。
B06.png
コンポーネントリストから「ThirdPersonCharacter(Self)」を選択します。
B07.png
Detailsパネルで「jump」を検索し、「JumpMaxCount」に「2」を入力。
B08.png

キャラクターのジャンプ処理を書き換える

EventGraphを開き、「Input Jump」のイベントノードから処理を書きます。これはキャラクターにデフォルトでついているジャンプ処理を書き換えます。
ノード全体の完成図がこちら!(下で順番に解説します)
B09.png

ジャンプ回数が残っているか判断

B10.png
キャラクタークラスにデフォルトで用意されている変数「JumpCurrentCount」(現在のジャンプ回数)と「JumpMaxCount」(最大ジャンプ数)を比較し、ジャンプ可能な状況かBranchノードで判断します。

セレクタラベルを指定

B11.png
「Sequence」ノードでこの後の処理を整理します。
「CharacterComponent」コンポーネントをGetし、そこから「isFalling」ノードでキャラクターが空中にいるか判断できます。
B13.png
B14.png

「Set Global Label to Selector by Name」ノードで、True(空中)側には「Action_Air」を、False(地上)側には「Action_Ground」のセレクタラベルを指定します。SelectorNameにはセレクタフォルダ名である「Action」を入力しておきます。
これでAtomCraftで作成したトラックの分岐が可能になります。「Set Global Label to Selector by Name」は再生されるすべてのAtom Cueに対してセレクタラベルを上書きしますが、個別に変更したい場合は「Set Selector Label」ノードを使用します。
こちらはAtom Componentを対象に指定します。
B15.png

サウンドを再生し、ジャンプを実行

B12.png
「Play Sound Attached」ノードでサウンドを再生します。UE4デフォルトの再生ノードではなく、ADX2 for UE4で用意された「Play Sound Attached」ノードを使います。
「Jump」ノードでジャンプを実行します。

これですべての実装が完成しました!
セレクタフォルダは複数のキューで共有できるので、ジャンプだけでなく他のアクションについても地上用、空中用といったサウンド分岐ができるでしょう。
他にも足元の材質に応じて足音を変える、といった使い方もできます。

テストプレイ

Spaceキーでマネキンがジャンプします。「JumpMaxCount」を増やしたので、空中でも一度だけ追加のジャンプが可能です。
その際、通常のジャンプと空中ジャンプでは効果音が異なっているはずです。
空中でジャンプを連打しても追加のジャンプは一度だけになっていること、効果音が連続で再生されないことを確認してください。
もしうまくいっていない場合、ブループリントノードの構成を見直してみましょう。

アニメーションにAtomSound再生タイミングを設定する場合

今回はジャンプ入力時にサウンドを再生しましたが、キャラクターのアニメーションに効果音の再生を組み込むこともできます。
デフォルトキャラクターのマネキンの場合、「Content」→「Mannequin」→「Animations」にある「ThirdPersonJump_Start」を開きます。
B03.png
タイムラインの「Notifies」の適当な位置をクリックし、「Add Notify」→「PlayAtomCue」をクリックします。
B04.png
Atom Soundの再生が組み込まれるので、Detailsパネルにて再生するサウンドを指定します。
B05.png

UE4デフォルトのマネキンは空中ジャンプ時に「ThirdPersonJump_Start」が再度再生される仕組みではないため、今回の記事ではこの方法を取りませんでした。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1