2
2

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 2022-02-12

はじめに

ADXアンバサダーとして記事を書いておりますSigと申します。
この記事ではアンリアルエンジン5とサウンドミドルウェア「ADX for UE」を使って、ゲーム中の攻撃などのヒットサウンドを多機能に実装してみます。

ADX for UEの新バージョンにて、「ゲーム変数」機能に対応したため、UE5でも同様の実装ができるようになりました。
記事と同様の実装を行えば、ADX旧バージョンでも同じ処理が実装可能です(一部ノード名などが変化しています)。

当記事ではUE5.3を使用します。基本的にブループリントのみでの実装を想定しています。
ADX for UEはインディー向けの「LE版」であれば、無料で使用できます。
https://game.criware.jp/products/adx-le/

前提

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

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

実装

AtomCraftで効果音を構成する

マテリアルの用意

今回は3連の打撃を1コンボとし、それぞれの打撃に弱・中・強の3段階の音を用意しました。
合計9つのマテリアルになります。
A01.png

キューの作成

キューシートで右クリックし、「新規オブジェクト」→「キュー『スイッチ』の作成」を選択します。
A02.png
これがコンボ1段目のキューとなるので、トラックを分けて1段目の「弱・中・強」のマテリアルをそれぞれドラッグアンドドロップして配置します。
A03.png

ゲーム変数の設定

3つのトラックからひとつをゲーム中選択して再生するには、ADXの**「ゲーム変数」**機能を使います。
プロジェクトツリーの「ゲーム変数」で右クリックし、「新規オブジェクト」→「ゲーム変数の作成」を選びます。
A04.png
新しくゲーム変数が作られるので、適当に名前をつけます。画像では「HitStrength」としました。
A05.png

キューを選択し、インスペクター中段にて「スイッチ」のボタンを押し、スイッチ変数を先ほど作成したものにします。
A06.png
A07.png
「等分化」ボタンを押し、各トラックに振り分けられるゲーム変数の幅が均等になるようにします。
A08.png

これでゲーム変数が0.0~1.0に近づくほど、ヒット時のサウンドが弱~中~強へと変化します。

プロジェクトツリーのゲーム変数を選択し、インスペクターで「初期値」を変更すると再生されるトラックも変化します。
A09.png

コンボ用のキューを作成

同じようにコンボ2段目、3段目のキューも作ります。
A10.png

ここまで完了したら、3つのキューをまとめてコンボサウンドにするためのキューを作ります。
キューシートで右クリックし、「新規オブジェクト」→「キュー『コンボシーケンシャル』の作成」をします。
A11.png
コンボ1,2,3段目のキューをドラッグアンドドロップしてトラックに配置します。
A12.png
キューそのものがトラックに登録されました。上からコンボ1,2,3段目となるよう配置します。
A13.png
キューは「キューリンク」という機能で呼び出されています。これはもとのキューに紐付けられているので、各キューが編集されるとコンボ用のキューにも影響を与えることになります。

インスペクターにて、「コンボ間隔」を「1000(ミリ秒)」とします。これで1秒以内に連続でキューが再生された場合、「コンボ」として異なるトラックが再生されていきます。もちろん各トラックはゲーム変数の値を反映して再生されます。
A14.png

キューシートのビルド

ここまでできたらキューシートをビルドします。
A15.png
A16.png

UE5での実装

UE5にキューシートをインポートする

ビルドしたacfファイル、acbファイルをコンテンツブラウザ(コンテンツドロワー)にドラッグアンドドロップしてインポートします。
acfファイルインポート時のダイアログにはどちらも「Yes」を選択します。
これにより、プロジェクトにAtom Configファイルが自動的に設定されます。
B01.png
B02.png

Atom Config、キューシートの両アセットがプロジェクトに入っていることを確認します。
B03.png
キューシートを開き、キューが再生できることを確認します。
B04.png
連続でコンボキューを再生すると、この状態でもサウンドが変化します。
B05.png

攻撃ヒット時にサウンドを再生する

キャラクターのブループリント内に基本的な当たり判定処理を作ってみました。
(画像をクリックすると拡大されます)
B06.png

ボックス型のトレースをキャラクターから進行方向に飛ばし、対象となるトレースチャンネルにヒットすればダメージが発生するものです。
ダメージを受け渡すApply Damageノードの先に、Spawn Sound at Locationを配置します。
B07.png

UE5デフォルトの同名ノードではなく、ADXによって提供されたノードを使用してください。
B07B.png

Break Hit Resultノードの「Locaiton」ピンを使い、正確なヒット箇所(トレースがヒットした座標)に音を配置しています。処理やゲームジャンルによって、キャラクター座標に再生したり、2Dサウンドとして直接スポーンしてもいいでしょう。

次に、再生するキューを指定してあげる必要があります。
Spawn Sound at Locationノードの青いインプットピンを右クリックし、「Promote to Variable」で変数化します。
B08.png

変数には「HitSound」と名前をつけました。
B09.png

コンパイルし、Detailsパネルにて再生するキューシートとキューを指定します。今回は「Cue_Combo」としました。
B10.png

この状態でテストすると、ヒット時にキューのサウンドが再生されます。1秒以内に再ヒットすると、コンボの2段目、3段目のサウンドが再生されるでしょう。

打撃の強さをゲーム変数に反映する

さて、先ほどのサンプルのグラフにも出ていましたが、今回は「AttackStrength」という変数をキャラクターに持たせています。
これはそのままキャラクターの現在の攻撃の強度となりますので、この値をADX側のゲーム変数に渡してあげるとサウンドを変化させられそうです。
ヒット音を鳴らすと同時に、Set Game Variable Value by Nameノードを使い、ゲーム変数名と値を指定します。
(旧バージョンではSet Atom Game Variableノードでしたが、ノード名が変更されました)

名前は「HitStrength」(AtomCraftでつけた名前)、値はキャラクターの変数「AttackStrength」を代入します。
状況によって数値で補正をつけてもいいでしょう。
B11.png

テスト用に、押したボタンによって攻撃の強さが変わる処理を作ります。
次のグラフでは、Input Key Z~Cを作りキーボードの対応ボタンを押した際に変数「Attack Strength」の値を変えています。この値がゲーム変数に反映され、ヒット時のサウンドが変化することになります。
B12.png

ざっとコンボ中のサウンド変化、攻撃の強弱による打ち分け機能を盛り込んでみました。
さらにAisacコントロールやバスセンドなどを使い、攻撃のヒット箇所やガード時などに音が変化する、といったことも可能です。

2
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?