どうもラブヘイトです
今月は1日も0PVがありません!(今の所)
モチベーション上がるぜ
自分もだんだんとUnityを理解できてきているのか、過去の記事でちょっとここ違うな・・・とか出てきましたので
それも少しずつ直して正確でわかりやすい情報を伝えられたらなと思います
今回はUnitychanの走る音をつけます
そしてUnityには3Dサウンドという機能があるので、実際にイヤホンで音の聞き分けができるか検証していきます!
◆はじめに
パーティクルの記事でもちょいちょい言ってましたが、
静止画やgifだけでは伝わりにくいことも増えてきましたので
youtubeにアカウントを作成しました!
これからは動画も取り入れて記事を書いていきますね
◆AudioClipのインポート・設定
対応しているフォーマットはこちらから参考にしてください
オーディオコンポーネントを追加したらこんな感じになります
では説明
Force To Mono
音声データをモノラルにする項目
ステレオはスピーカー2つ、モノラルはスピーカー1つで音を出します
基本ステレオで大丈夫です
Normalizeは音を均一に大きくする方法です
Load In Background
メインスレッドとは別のスレッドでオーディオファイルの読み込みをしてくれます
ここはチェックを入れておきましょう
Ambisonic
アンビソニックというのは360°全方位の音を再生するときに使用します
VRを使用するアプリであれば必要ですが、今回説明は割愛します
ここからは下のOverride〜の項目の説明です
LoadType
インポートするオーディオファイルをどのように展開するか決める項目
・Decompress On Load
ロードの際に解凍される、短い音(一瞬で終わる音)などはこれがいい
・Compressed In Memory
再生される直前に解凍される、ファイルは軽くなるが再生時に多少処理が入ってしまう
長いオーディオに適用したら遅れそう
・Streaming
ストリーミング再生なので、再生されながらメモリに読み込んでいきます
→オーディオ全てをメモリに読み込まなくてよくなる
Preload Audio Data
onの場合はシーン再生時にオーディオクリップが読み込まれる
offにしている場合はスクリプトの方で制御が必要
じゃあ多少の制御は必要になっても、offにしている時の方がシーン読み込みが早くなるのかな?また検証してみなくては・・
Compression Format
サウンドファイルの圧縮方法
・PCM
圧縮をかけない方式、ファイルサイズがでかくなる代わりに解凍させる時間などは必要ない
・Vorbis
Ogg Vorbis形式で圧縮をかける。聞いたことない形式だな・・・
・ADPCM
ADPCM形式で圧縮,Vorbisより圧縮率が低く音の劣化は少ないです
Quality
どれだけの圧縮率か選択する。Vorbis圧縮形式だけで使用可能
下にサイズのプレビューも出てくるので便利
◆Audio Souceのインスペクター
AudioClip
音声データを紐づける項目
Output
オーディオミキサーグループを割り当てることができます
オーディオミキサーはWindow>Audio>Audio Mixerから新しく作成可能
Outputに設定できるのはこの中のMasterなので、ここの名前を変えていないと紛らわしくなるので注意
Bypass Effects
「バイパス」はオーディオ系の単語で加工しないで音を出すという意味らしいです
つまり原音をそのまま出している状態(Mixerで加工したのもは反映される)
なのでBypass Listener Effectsも聞こえ方の設定かと、そんなに大切ではないです
Play On awake
シーン再生時に再生するかどうか
Priority
シーン内のオーディオの優先度を決める、優先度が高いほどそのオーディオに優先的にリソースが割り当てられるのかな
StereoPan
右と左どっちのスピーカーから聞こえるか設定する
3Dサウンドを適用している場合はうまく動作しない
Spatial Blend
3Dサウンドかどうか値を1にすると3Dサウンドになる
下のグラフで詳細に聞こえ方を変更できます
◆実際に音をつけてみる
音をつけるのは簡単です
Audioクリップに再生したいオーディオを選択してPlayOnAwakeにチェックを入れれば再生されます
ただこのままでは問題があります
・歩いてもないのに再生されている
・このUnityちゃんは走ることもできるため走った時、足の動作に合わない
これら2つの問題を解決していきます
新たに「WalkAudioPlayer」という名前でスクリプトを作成
Unitychanにアタッチしてください
FixedUpdate関数でプレイヤー(Unityちゃん)の歩くパラメーター(walking)もしくは走るパラメーター(run)が有効になっているかどうか取得していきます
このパラメーターの部分がわからない場合は過去の記事を参考にしてみてください
tubakihimelovehate.hatenablog.com
意外と難しかったのが、「Update内で一度だけ再生させる」ということでした
Play()をするたびに足音が最初の部分だけ連続再生されて、どうしよ・・・ってなりましたがなんとかこういう形で割と簡潔に記述できました
完成した動画です
◆3Dサウンド
最後に3Dサウンドがちゃんと動作しているか確認してみます
丸い玉から音が出ています
オーディオの録音方法があまりよくなかったため伝わりにくいですが
右と左できちんと分かれているし、遠近で音量が変わって行くのがわかります!
なんて便利な機能なんだ!
ということで初めて動画を出してみましたが動画はいいとして音が・・・
また色々試してみます
それではまた