1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ADX + UE5で、各種アクターにサウンドを付与して操作を行う

Last updated at Posted at 2024-11-05

はじめに

ADXアンバサダーとして記事を書いておりますSigと申します。
この記事ではアンリアルエンジン5とサウンドミドルウェア「ADX for UE」を連携させ、「各種アクターにサウンドを付随させ、各種操作を行う」実装を行ってみます。

今回の実装例

UE5での開発では、ゲーム中様々なアクターを扱います。BPで作られたキャラクターやアクターもありますし、Niagaraなどを使用したエフェクトもその一部に当たります。
この記事では、アクターにサウンドをコンポーネントとして与え、親アクターの状態に即してサウンドに後天的な変化を与えていく処理を紹介します。

前提

UE5.4+「ADX LE UE SDK(2.03.00)」を使用します(他バージョンにおいても、基本的に実装方法は同じです)。
基本的にブループリントのみでの実装を想定しています。
ADXはインディー向けの「LE版」であれば、無料で使用できます。
https://game.criware.jp/products/adx-le/

なお、ADX2からADXへ名称が変更になりましたが、ツール構成は変更ありません(2がないから古いほう、というわけではありません)。

ADX for UEの導入や基本的な使い方は以下の記事にあります。必要に応じて参照してください。
ADX for UEの導入で、一歩上のサウンド表現を(導入編)

ADX for UEの導入で、一歩上のサウンド表現を(実践編)

実装

AtomCraftで環境音を構成する

UEでサウンドを操作する

アクターにサウンドを付与する

基本的な使用ケースとして、エフェクトのスポーン時にサウンドを付与してみましょう。
レベルブループリントを開きます。
A01.png
Get Player CharacterGet Actor Locationでプレイヤー座標を取得し、その位置にSpawn System at Locationでエフェクトをスポーンします。
A02.png
この状態でテストします。「1」キーを押すごとに、プレイヤーからエフェクトがスポーンします。
A03.png

ここにサウンドを付与してみましょう。
コンポーネントを追加するには、Add Atom Componentノードを使用します。
このノードの対象は「アクター」ですが、Spawn System at Locationのアウトプットノードから参照できるのは「Niagara Particle System Component」です。
そこで、アウトプットノードからGet Ownerノードを使用し「Niagara Particle System Component」を内包するアクターを取得します。
A04.png
追加したAtomコンポーネントに、Set Soundノードでキューシート及びキューを指定します。
A05.png
適当なキューを割り当ててみましょう。
A06.png
最後に、Playノードでキューを再生します。
A07.png

この状態でテストします。「1」キーを押すと、プレイヤーからスポーンするエフェクトと共にサウンドが付与、再生されます。
ですがコンソールコマンドでサウンドを視覚化してみたところ、サウンドの座標はワールド原点にスポーンしてしまっているようです。
A08.png
「Niagara Particle System Component」のワールド座標をGet World Locationで取得し、追加したAtomコンポーネントをSet World Locationで移動させます。
A09.png
これでエフェクトの位置にサウンドがくるようになりました。
A10.png

付与したサウンドを変化させる

付与したAtomコンポーネントを操作し、サウンドを変化させる例です。
Add Atom Componentのアウトプットピンから線を伸ばし、ノードを追加します。
B01.png
Set Aisac Control Valueノードで、追加したキューにもAisacコントロールを行うことができます。
B02.png
キューの再生後にノードをつなげます。
B03.png

これでサウンドの操作が可能なのですが、いちいち追加したコンポーネントから線をつなげる必要があり、場合によっては処理が煩雑になってしまいますね。
別の場所からコンポーネントにアクセスできるよう、変数として格納することでこの問題を解決できます。
Add Atom Componentのアウトプットピンを右クリックし、「Promote to Variable」を選択します。
B04.png
新たに変数が作られるので名前をつけ、自動的に作られるSetノードをつなげます。
B05.png
この変数を使用することで、別イベントや別アクターからでも追加されたキューにアクセスすることができます。
B06.png
Set Aisac Control Valueノード以外にも、もちろんSet Volume MultiplierSet Pitch Multiplierなどのノードでも操作可能です。
B07.png

付与したサウンドを外部から取得する

では、さらに取り回しを良くするために、スポーンしたエフェクトを手がかりに、追加したAtomコンポーネントにアクセスしたいところです。
エフェクトのスポーン時、エフェクト自体を変数として格納しておきます。
手順はAtomコンポーネントの変数化と同じです。
C01.png
しかし、変数化したエフェクトを他の場所で参照し、Atomコンポーネントを取得しようとしてもノードが出てきません。
C02.png
これを解決するには、

  1. エフェクトをGetする
  2. エフェクトのOwner(アクター)を取得する
  3. Get Component by ClassノードでAtomコンポーネントを取得する

という手順を踏む必要があります。Get Component by Classノードでは取得したいクラスを指定する必要があるので、「Atom Component」を指定します。
C03.png
これで、同じようにキューを対象とした操作が行えるようになりました。
C04.png

アクターの状態に応じてサウンドを再生、変化させる

アクターが特定の状態になった際、追加でサウンドを再生・変化させることも可能です。

アクターを対象とし、線を伸ばして「assign」と検索するとイベントディスパッチャを直接配置できる選択肢が表示されます。
例えば、ここで「Assign On Destroyed」を選択してみます。
D01.png
選択すると、イベントを発火させるよう登録するBind Eventノードと、その対象であるカスタムイベントが配置されます。
ここから各種ノードでサウンドを再生・変化できます。
D02.png

また、Bind Eventノードだけを配置することもできます。
D03.png
赤いインプットピンから線を伸ばして新規にカスタムイベントを配置したり、また既存のカスタムイベントと関連づけることもできます。
D04.png
D05.png

これらの方法で、もともとAtomコンポーネントを持たない設計のアクターにもサウンドを付与し、自由に操作することが可能になります。
一度だけ使用する演出やちょい足しの処理としてとても便利です。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?