【cluster】入室時PlayOnAwake爆音問題

◆はじめに
・この記事はメタバースプラットフォーム「cluster」についての記事です。
・専門的な知識を持っていない一般人が書いているので、正確性には欠けます。
・すでに同じ内容が誰かによって投稿されていた場合は、教えていただけるとその記事をここに貼ります。場合によってはこの記事が消滅します。(検索力に自信はないけど自分では見つけられなかった。)
・この記事の内容は、記事を読んだときには修正されている可能性があります。

・この記事は、ワールド製作者、かつ、以下に該当する人向けです。
①-①ワールドに入室したとき、一瞬だけ聞こえる大きな音声の正体が知りたい。
①-②ワールドに入室したとき、一瞬だけ聞こえる音きな音声を修正したい。

◆項目①-①
▼ワールドに入室した直後、一瞬だけ聞こえる大きな音声の正体について
・「AudioSource」コンポーネントの「PlayOnAwake」にチェックがついたオブジェクトが、ワールドアップロード時にアクティブ状態であること、によって引き起こされる現象です。

・ワールドBGMの設定を例にします。
1.空のGameObjectを作成。
2.Audiosourceコンポーネントを付与。
3.Audioclipを設定。
4.Loopにチェックをつける。
5.Volume調整。
6.おわり。

おおまかに、以上の手順で設定するのがよくある方法だと思います。
このとき、PlayOnAwakeにチェックがついていることで、ワールド入室時にBGMが流れることになります。
しかし、実際にワールドに入室すると、Volumeに設定した音声よりも、ひときわ大きな音声が一瞬だけ再生されて、Volumeに設定した音量に遷移するような挙動が発生します。

この現象を、仮にPlayOnAwake爆音問題と呼ぶことにします。
PlayOnAwake爆音問題は、Volumeに設定した数値が「0」以外の場合発生します。1でも、0.1でも、0.01でも発生します。一応、Volumeの数値が小さいほど、大きい音声部分の音量も小さくなるみたいです。

発生する理由は正直僕には説明できませんが、条件は大体分かるので、一度下にまとめます。そういうものなのだということで話を進めていきます。

▼PlayOnAwake爆音問題が発生する条件
(前提として、Audioclipが設定されていて、PlayOnAwakeにチェックがついていて、Volumeが0以外で、アクティブ状態のAudiosourceコンポーネントをAAと表記します。)

・ワールドに入室したとき、プレイヤーにSignalが通知される状態となる(自分のアバターが表示された直後あたり)までに、AAが存在すること。

・上記がPlayOnAwake爆音問題が発生する条件になります。(たぶん大体そんな感じ)

◆項目②-②
▼ワールドに入室したとき、一瞬だけ聞こえる音きな音声を修正したい。
・PlayOnAwake爆音問題の対策として、4つ例を挙げます。

案①Animatorを使う。(おすすめ)
案②OnCreateItemTrigger、PlayAudioSourceGimmickを使う。
案③OnCreateItemTrigger、SetGameObjectActiveGimmickを使う。
案④PlayerLocalUI、OnJoinPlayerTrigger、SetAnimatorValueGimmickを使う。(一番耳に優しい)

・以下、簡単な解説です。

▼案①Animatorを使う。(おすすめ)
・Audiosourceの初期音量を0にして、AnimationでVolumeを制御します。ゆっくり10秒くらいかけてフェードインさせてあげるといい感じになります。(PlayOnAwake爆音問題が発生するタイミングのとき、ごく小さなVolumeになっていることで、影響が小さくなる。)

▼案②OnCreateItemTrigger、PlayAudioSourceGimmickを使う。
1.AAの状態からPlayOnAwakeのチェックを外す。
2.PlayAudioSourceGimmickを付与する。
3.OnCreateItemTriggerでBoolを通知する。
(Boolの同期タイミングが、PlayOnAwake爆音問題のタイミングより後になることで、影響が小さくなる。)

▼案③OnCreateItemTrigger、SetGameObjectActiveGimmickを使う。
1.AAの状態から非アクティブにする。
2.SetGameObjectActiveGimmickを付与する
3.OnCreateItemTriggerでBoolを通知する。
(Boolの同期タイミングが、PlayOnAwake爆音問題のタイミングより後になることで、影響が小さくなる。)

▼案④PlayerLocalUI、SetAnimatorValueGimmick、OnJoinPlayerTriggerを使う。(一番耳に優しい)
1.PlayerLocalUIを設置する。
2.AAをPlayerLocalUIの子に移動する。
3.AAの初期音量を0にする。(以下AA0)
4.AA0にSetAnimatorValueGimmickを付与する。
5.Volumeをフェードインさせるアニメーションを作る。
6.OnJoinPlayerTriggerでplayerに通知して、フェードインアニメーションへ遷移させる。
(PlayOnAwake爆音問題のタイミングより後に音声が聞こえるようになるので、影響を受けない。)

◆おわりに
以上でPlayOnAwake爆音問題についての記事は終わりです。
気にしない人は気にしなくていいと思いますが、ワールドに入室して最初の感想が「うるさっ」になってしまう可能性があるのはもったいないと思うので、この記事を書きました。

ありがとうございました。


この記事が気に入ったらサポートをしてみませんか?