はじめに
ADXアンバサダーとして記事を書いておりますSigと申します。
この記事では、UE5のGameplayTagとADX for UEを組み合わせてサウンドを管理する実装の活用法を紹介します。
今回は、アニメーションの特定のフレームでサウンドを再生する仕組みを作ります。
ADX for UEとGameplayTagの連携の基本的な情報についてはこちらを参照ください。
UE5 + ADXで、サウンドをタグによって管理・再生する
UE5のAnimNotifyを使うと、アニメーションの任意のフレームにイベントを仕込めるため、音とモーションのタイミングを完全に一致させられます。ここにGameplayTagを組み合わせることで、「どの音を鳴らすか」をタグで指定し、実際のキューへの解決はデータテーブルに任せることができます。
例えば、
- キャラクターごとに異なる服を着ており、その材質によりはためく音が変わる
- 履いている靴により足音が変わる
- 状況別のボイスをキャラごとに再生する
などの演出が可能です。
当記事ではUE5.7 及び 「ADX LE UE SDK(2.05.01)」を使用します。
また、基本的にブループリントのみでの実装を行います。
ADX for UEはインディー向けの「LE版」であれば、無料で使用できます。
前提
「ADX for UE LE」を使用します。導入や簡単な使い方は以下の記事にあります。
ADX for UEの導入で、一歩上のサウンド表現を(導入編)
ADX for UEの導入で、一歩上のサウンド表現を(実践編)
基礎編の仕組みを使用します。先にこちらを参照いただけると行程がイメージしやすいと思います。
UE5 + ADXで、サウンドをタグによって管理・再生する
実装
タグとキューを用意する
「GameplayTags」タブの「Manage Gameplay Tags...」からタグのマネージャを開きます。

アクション音用のタグを追加します。
例:
- Sound.Action.Woosh : キャラクターがアクションする際の音(服のはためき、拳を振る音など)
- Sound.Action.Jump : ジャンプの踏み切り
- Sound.Action.Land : 着地音
AtomCraftでサウンドを用意する
タグが用意できたら、AtomCraftに移りマテリアルをインポートします。

必要に応じて、パンタイプを「3Dポジショニング」に設定します。3D空間上のアクションでは距離減衰や音響が加味されるようにします。

キューシートをビルドしてUE5にインポートします。
既にインポートしたアセットを右クリックし、「Reimport」するのがお手軽です。

データテーブルの編集
基礎編のデータテーブルに、タグとキューの対応を追加しておきます。
それぞれについてキューと注釈を設定します。
アクション音用のAnimNotifyを作る
アニメーションの特定のフレームにサウンド再生を仕込むための、カスタムAnimNotifyを作成します。
通常のNotifyでは引数やパラメータを設定することができませんが、以下の方法であれば自由度の高いNotifyを作ることが出来ます。
コンテンツドロワーで右クリック→「Blueprint Class」を選択します。
親クラスは AnimNotify を選択します。検索欄に「animnotify」と入力すると見つけやすいです。
「AN_PlaySoundByTag」と名前をつけました。
変数を追加する
AN_PlaySoundByTagを開きます。
再生するサウンドを指定するための GameplayTag 型の変数「SoundTag」を追加します。
目玉のアイコンを押して Instance Editable にしておきます。これにより、アニメーションエディタ上でNotifyごとにタグを指定できるようになります。
再生処理を書く
Received Notify 関数をオーバーライドします。これはNotifyが発火したときに呼ばれるものです。
My Blueprintパネルにて、Functionsの「Override」からプルダウンで選択します。
関数を開きます。
イベント内で、基礎編で作ったPlaySoundByTagを呼び出します。
PlaySoundByTagに変数「SoundTag」を渡します。

「Mesh Comp」の入力で再生したメッシュを取得できます。
Get World Locationでメッシュのワールド位置が得られるので、再生位置として使用します。
最後にReturn Nodeでtrueを返します。これは「Notifyの処理が成功した」ことを示す戻り値です。
アニメーションにNotifyを配置する
攻撃やジャンプのアニメーションシーケンス(またはモンタージュ)を開きます。
Notifyトラックを右クリックし、「Add Notify」から「AN_PlaySoundByTag」を選択します。
音を鳴らしたいフレームにドラッグ&ドロップして配置します(この時点でデバッグメッセージが表示され、処理が走っていることが分かります)。
配置したNotifyを選択し、Detailsパネルで「SoundTag」に鳴らしたいタグを指定します。
タグを設定してアニメーションを再生すると、設定したフレームでサウンドが鳴ります。音とモーションのタイミングがアニメーション側で完結しているため、ズレが起きません。
まとめ
AnimNotifyとGameplayTagを組み合わせることで、柔軟性が高く、アニメーションと同期した再生処理が実現できます。
今回は基礎編の「PlaySoundByTag」を活用しているため、サウンドの追加や差し替えはデータテーブルの編集だけで完結します。アニメーターやレベルデザイナーがサウンドの実装を意識せずに音を仕込めるのがこの設計の大きな利点です。
アクション音のNotifyは攻撃やジャンプに限らず、ダッシュや回避、特殊アクションなどにもそのまま応用できます。
補足:キャラクターごとに異なるサウンドやボイスを再生する
「Mesh Comp」の入力からGet Ownerノードで、メッシュのオーナーとなるブループリントを取得できます。

これを特定のクラスにCastすることで、ブループリント内の情報が取得できます。
この例ではキャラクタークラスにキャストし、そのクラスが持つ「CharacterTag」変数を取得しています。
これによってキャラクター別の再生処理を分岐させる、ということが可能になります。
























