Unity Audio Spatializer SDKを使ってみる
Audio Spatializer SDK(オーディオ立体化 SDK)で調べると、Oculas Spatializer SDKの記事が多いので、あえてUnity Audio Spatializer SDKを使ってみました。
ダウンロード
ここからDemoをダウンロードします。
https://bitbucket.org/Unity-Technologies/nativeaudioplugins/downloads
展開してプロジェクトとして開くと作ったUnityのバージョンが古いとか言われるけど続行!
必要なものをパッケージ化
デモとかいらないので、
Editor\AudioPluginDemoGUI.dll
Plugins\x86\AudioPluginDemo.dll
Plugins\x86_64\AudioPluginDemo.dll
この3つほどをパッケージ化して他のプロジェクトに流用できるようにしとく
実際使ってみる
Audio Project の設定でSpatializer PluginをDemo Spatializerに変更
オーディオ立体化したいAudio Sourceに
Spatialzerのチェックをつける。
これで完了です。
PlayClipAtPoint関数を使ってるのですけど。。。
PlayClipAtPointでAudioClipを鳴らすと"One shot audio"のAudioSourceが自動生成されて自動で消えます。
自動生成されたAudioSourceのプロパティを変更できればいいのですができなさそうなので似たような関数を作りました。
AudioSource PlayClipAt(AudioClip clip, Vector3 pos)
{
if (clip == null) return null;
GameObject tempGO = new GameObject("TempAudio"); // create the temp object
tempGO.transform.position = pos; // set its position
AudioSource aSource = tempGO.AddComponent<AudioSource>(); // add an audio source
aSource.clip = clip; // define the clip
// set other aSource properties here, if desired
aSource.spatialize = true;
aSource.spatialBlend = 1.0f;
aSource.Play(); // start the sound
Destroy(tempGO, clip.length); // destroy object after clip duration
return aSource; // return the AudioSource reference
}
合ってるかどうか不明ですが、これに置き換え。。。