はじめに
3Dゲームにおいて3Dサウンドは非常に重要です。プレイヤーとオブジェクトの距離によって音の大きさを変化させる事ができれば、敵の足音で位置を推理させたり、爆弾のタイマーやセーブポイントのようなオブジェクトを強調したり、工場エリアのような環境音を設定できたりします。
Unityにも3Dサウンド機能はありますが、ADX用サウンドオーサリングツール「AtomCraft」で実際の聞こえ方を確認しながら音の調整が可能です。
本記事ではUnityとサウンドミドルウェア「ADX for Unity」を用い、3Dサウンドの基本的な実装例を紹介します。
この記事は「ADX2とUE4で3Dサウンドを実装する」のUnity版です。元記事作者のSigさん ( https://qiita.com/SigRem )の許可を得て作成しています。
前提
動作確認環境
Windows 10 Home 20H2
Unity 2020.3.27f1 + ADX LE Unity SDK 3.06.03
CRI ADX LE Tools for Windows 3.46.09
前提記事
CRI ADXの導入方法や基本的な操作については、以下の記事を参照して下さい。
やること
- AtomCraftでキューを作成
- 3Dサウンドのパラメータ設定
- Unityにインポート、テストシーンを作成
実装
AtomCraft側
まずは、再生する音データの作成を行います。ADXにおいては、再生用のデータはUnityとは別のツール「AtomCraft」を使います。その手順については、元の記事(UE4向け記事)の同名の項と同じになりますので省略しています。
本記事の手順を試す場合は、まず元の記事の該当項目を進めてから本記事を進めてください。UE4版との違いとして以下の3点に気をつけて下さい。
-
バージョン違いにより、インスペクターの表記がパン[3D]→3Dポジショニングとなっています
-
距離減衰は最小20最大100くらいにして下さい。この値の単位はUnity内でのメートルと同程度となります
-
「Atomキューシートバイナリのビルド」画面で、一番左下のオプション「UnityAssets出力」にチェックを入れるのを忘れないようにして下さい
Unity側の実装
キューシートのインポート
AtomCraftからエクスポートしたファイルをインポートします。
テストシーンの作成
以下のようなシーンを作成します。
- CriWareLibraryInitializer、CriWareErrorHandler
- 基本コンポーネント、GameObject>CRIWAREから作成
- CRIWARE
- 自動生成
- BGS_Env(CriAtomSource)
- 前項でインポートした音源
- PlayOnStartにチェックを入れる
- Plane
- デフォルトでOK、色を変えると見分けやすい
- Cube
- CRI Atom Listenerをアタッチする
- BGS_Env(CriAtomSource)と座標を揃える
テストシーンの実行
出来たら忘れずに保存し、実行しましょう。
CubeまたはBGS_Env(CriAtomSource)を動かすことにより、聞こえ方が変化するのが確認できます。
応用
今回はプレイヤー代わりのCubeにListenerをアタッチしましたが、カメラにアタッチしたほうが自然になる場合も多いので、自身のゲームにあった方法を選ぶとよいでしょう。
また今回は減衰だけ設定しましたが、AtomCraftでは音の出る向き(有効角度)やドップラー効果のかかり具合を調整することも可能です。