
UnityCreativeCoreの学習⑧音楽について
音楽は後回しにされがちな仕事ですが、下手に実行したり、完全に忘れてしまった場合には、ユーザーがゲームから我に返る原因になります。
だ、そうです。今回もがんばりましょう!
まとめはこちら
さてなんにせよ、音楽を再生するので、シーンビューで音が出るようになっているかチェックしましょう。

もちろん、OSそのものの音も再生可能なようになっている前提です

ゲームの中で音楽をどのように考えるべきか
・サウンドスケープ(音の風景、音環境)を作る
・シーンのニーズを把握し、必要な音を見つける
・イベントでどのようにトリガーするかを検討する
・サウンドスケープ構築の中で、最終的にオーディオのアクセシビリティ(利用しやすさ)を考慮、検討する。
・特殊効果を適用して環境のビジュアルを反映させ、新しいシーン用に独自のオーディオサウンドスケープをゼロから作成する。
こういったことができるようになれば、学習は成功であるといえるでしょう。
ダイジェティックサウンドとは
サウンドにおける「ダイジェティック」と「非ダイジェティック」の違いは、以下のように説明できます:
ダイジェティック:
ダイジェティックなサウンドは、物語や映像の世界内で発生する音を指します。
つまり、キャラクターが聞くことができる音や、シーン内の出来事に関連する音がダイジェティックなサウンドです。
例えば、キャラクターがラジオを聞いている音や、戦闘シーンで銃声が鳴る音などがこれに該当します。
非ダイジェティック:
非ダイジェティックなサウンドは、物語や映像の世界外で発生する音を指します。
つまり、視聴者やプレイヤーに対してキャラクターやシーンの内外で流れる音楽や効果音が非ダイジェティックなサウンドです。
映画やゲームのBGM(背景音楽)や、ナレーション、さまざまな効果音などがこれに当たります。
簡単に言えば、ダイジェティックなサウンドは物語の中で起こる音であり、キャラクターや出来事と直接関連しています。一方、非ダイジェティックなサウンドは物語の外部から来る音であり、視聴者やプレイヤーに対して追加の情報や雰囲気を提供します。
オーディオエンジニアの責任
オーディオ エンジニアは、エクスペリエンス内ですべてが良好なサウンドであることを確認する責任がありますが、そのサウンドがどこから来るのかにも責任があります。
どこから聞こえるか、と同時に、著作権を侵害していないかなど含め、既存のサウンドライブラリを使用したり、それを重ねたり、最初から作成したりします。以下のようなツールがよく使われます。
Wwise Spatial Audio : より高度な空間オーディオエフェクト用のプラグインで、インディーズスタジオとAAAスタジオの両方で同様に使用されています。
Audacity : オーディオエフェクトを録音および編集できるオープンソースのオーディオアプリケーション。既存のサウンドに小さな編集を加える場合に特に便利です。
Beepbox : 楽器のメロディーを作成するための無料のオンライン ツール。
オーディオリスナーとオーディオソース

ユーザーの耳であるAudio Listener と、シーンビューでオーディオファイルを保持するAudio Source。
AudioListnerはカメラに自動的に組み込まれ、AudioSourceは組み込まれたオーディオクリップを再生します。
Unityで現在使用できるオーディオ形式
は以下です。
MPEG (Moving Picture Experts Group によって開発)。.mp3
Ogg Vorbis - オープンソースの汎用オーディオ。.ogg
WAV (波形オーディオ ファイル) - Microsoft と IBMによって開発。.wav
AIFF (Audio Interchange File Format) - Apple によって開発。.aiff
空間の感覚をもたらす音
アンビエントミュージック、環境音楽は、ゲームにおいて重要です。
試しに、練習がてら自分の周りの音に注意を払いましょう。
現時点で聞こえる音はなんですか?
・お湯の沸く音
・外を歩く靴音
・壁の中のモーター
・隣人が扉を開ける音
・鳥の鳴き声
・車の音、遠くのサイレン
そういったものを知っておくことが、環境音楽を決定する上で重要です。
プレイヤーに足音を追加しよう
足音をつけるのは簡単だと思う?

これらは、アニメーション イベントを使用して編集します。
画面のスケルトンには、すでにアニメーションが登録されている。
ということは、プロジェクトウィンドウでanimなどで検索すると、サウンドのこともわかりそうですね。

インスペクターでanimationタブを開いて

イベントセクションを開きましょう

[イベント] セクションには小さなタイムラインと、送信できるさまざまな種類のデータのリストが表示されますが、最初のイベントを追加するまではグレー表示され、使用できません。





着地音なので、左足だけでなく右足着地と、ジャンプの着地、走るアニメでの足音、なども発見して、おなじように関数を実行できるようにしましょう。

スクリプトに音をアタッチしよう
スクリプト内で、以下のように、場所にあわせて足音を変えてアタッチしている

ヒエラルキーウィンドの中でプレイヤーを探し、PlayerArmatureにスクリプトをアタッチします。


自分自身の足音なので、キャラクター自身のオブジェクトに。

スクリプトには、このような形でアタッチできる。

PlayStepは、ランダムな音を出す。廊下や石畳なら同じ音でも良いが、草原や水場、洞窟であれば同じ音では不自然だ。

アニメーションのイベントの関数に入れたものはこれを呼び出しているが、なぜそうなるのだろうか。今のところ謎。
OnControllerColliderHitの関数が、今どこのサーフェスの上を歩いているかを判定してくれる。

床にタグをつけましょう
草のフィールドにはGrassのタグをつけてみましょう

音楽を入れて、歩いてみる


最初は良いけど飽きる・・・
オーディオファイルを複数選択して、各項目にまとめてドラッグしましょう

これで、音に変化があらわれます。単調なのよりずっと良いですよ!
そういう訓練をしっかり身につけておきましょう
音源のライセンスの確認をしましょう
チュートリアルで参照されている Unity Asset Store やその他のリソースに加えて、Open Game ArtやFreeSound.orgでも多種多様なサウンドエフェクトを見つけることができます。オーディオ デザイン全般に興味がある場合は、携帯電話でオーディオを録音して独自のサウンド効果を作成してみることを検討することもできます。
オーディオを入手する方法に関係なく、オーディオにどのような種類のライセンスがあるのか、また自分のプロジェクトで使用できるのかを確認してください。Open Game Art からわかるように、信頼できるリポジトリにはオーディオ ファイルのライセンス タイプが明確にマークされています。

CreativeCommon4.0の場合
Attribution(表示):このライセンスでは、適切なクレジットを表示することが求められます。つまり、オリジナルの著作者に適切なクレジットを与える必要があります。クレジットの方法は自由であり、著作者の指定に従うこともできます。また、クレジットにはリンクを提供し、ライセンスの詳細を示す必要があります。また、もし修正を加えた場合は、その旨を明記する必要があります。
No additional restrictions(追加制約なし):このライセンスでは、以下のことはできません
追加の法的条件や技術的な手段を使って、他者の作品の利用を制限する。
作品を利用することでライセンスの条件を侵害する。
このようなライセンスは、作品を共有し、再利用するための柔軟性を提供しますが、同時に著作者の権利を保護します。
気をつけておきましょう。
滝の音を追加する
では、続いて、滝に近づいたら水の音が聞こえるようにしたいですね。
ヒエラルキーウィンドウでオーディオソースを追加。










右耳、左耳の差がありますね。
ユーザーの右に水場があるか、左に水場があるのか。
なかなか素晴らしい機能ですが、環境音というものは、そういうものではないです。聞こえたと思ったら両耳で再生するべきでしょう。

ボリュームロールオフを調べよう
対数的なロールオフ



減衰率は、0.3からは下がりません。減衰率です。音量ではないのです。
こんな風に、最大距離を小さくすると、あまり良い状態にはなりません。
実際にプレイしてみて、どれくらいの距離で聞こえはじめるか、メモしてみましょう。
線形的なリニアロールオフ

自然にうっすら聞こえてるのではなく、近寄るごとにどんどん大きく。
これは、自然のものというより、そこに注目させるために使います
Logarithmic Rolloff、対数的なロールオフの方が、今回の場合は優れているように感じられますね。
カスタムロールオフ
アニメーションの時のように、グラフをカスタマイズすることができます。

オーディオリスナーの位置を変える
実は、キャラクターではなく、カメラにオーディオリスナーがついていたので、キャラクターよりも遅く滝の音が聞こえていました。
そこで、キャラクターにオーディオリスナーを変更しましょう
MainCameraのオーディオリスナーを削除し


ドップラー効果

オーディオリバーブゾーンの作成
エコーがかかるゾーンがある。というお話
洞窟内の足音はエコーがかかってほしいですよね。

ヒエラルキーでオーディオリバーブゾーンを作成し


プリセットを洞窟に設定


こうなると、洞窟内でパシャパシャ水音も聞きたいです。
オーディオソースを追加して、リニアロールオフで。
滝の音が混ざるので、今回のロールオフは適当でよいです。

もっと強調させるために優先度を変えます。デフォルトは128


エフェクトを追加します
[オーディオ ミキサー]ウィンドウを開くには、メイン メニューに移動し、[ウィンドウ] > [オーディオ] > [オーディオ ミキサー]を選択します。

+ボタンで、新しいミキサーを作り、名前を[master]にする。



水滴にもわりあててあげよう。
再生モードで編集と選択したら、編集可能。ボリューム変更や、エフェクトの追加ができる。



さまざまなエフェクトを体験してみましょう。
アクセシビリティのベストプラクティス
インタラクティブ エクスペリエンスのほとんどにおいて、オーディオのアクセシビリティ オプションを追加することは難しい作業ではありませんが、制作プロセスの早い段階で考慮する必要があります。
あらゆるタイプの字幕やキャプションの目標は、ユーザーが音声を聞くことができなくても、エクスペリエンスの全範囲を確実に理解できるようにすることです。これを達成するには、少なくとも次のような経験が必要です。
あらゆる会話に字幕を付けます。
重要な音声イベントの見出しや説明文、キャプション
画面上で読みやすい字幕および説明文のキャプションのフォント (読みやすいフォントと適切なサイズを含む)。
簡単に読めるよう十分な長さにわたって画面上に残る字幕/見出しや説明文、キャプション
専用の設定 UI メニューを作成することで実現できます。アクセシビリティ ガイドラインと優れた字幕のヒントについて詳しくは、イアン ハミルトンのプレゼンテーションに基づいて、セオドア ニキティンが執筆した「ゲーム アクセシビリティ ガイドライン」の「聴覚」セクションと「ゲームの字幕に関する 10 の黄金律」をご覧ください。
ゲームの字幕黄金律10について抜粋
1. 精度(ユーザーは声優の声を間違えて聞き取るかもしれない)
2. 包括性(すべてがそうなっているか、ムービー画面ではつかなかったりしないか)
3. 字幕を一元化する。同じ場所に表現されるか、他のインターフェイスと間違えられはしないか
4.画面表示の、ルール、一貫性はあるか

5.発言者は指定されるか
6. 音の方向は大丈夫か
7.読むのに適した時間かどうか、速すぎない?
8. クリアフォント読みやすい
9. 重要な音にキャプションを付ける

10.字幕オプションがあるか、文字サイズなども含めて
注意をはらいましょう。
クローズドキャプションデータベースを作成する
Project Audio フォルダーで右クリックし、[作成] > [クローズド キャプション] > [CCDatabase] を選択します。






これで、滝に近づくと、[Waterrushing]の文字があらわれる。
ための
クローズドキャプションのセリフになります。
が、今はデータベースに入っているだけなので、あせって再生したりしても、何も出てきません。
クローズドキャプションのシステムプレハブを作ろう

これをヒエラルキー上にドラッグして、内容を編集する。

先ほど設定したCCDatabase,画面表示のCanvas,CCIndicatorPrefabと、追跡が必要なオブジェクトを設定する項目があるので、CCDatabaseとTracked For
Posに対して設定してあげる。
Databaseは先ほど作成したもの。
Tracked For PosはMainCamera
AudioSourceにそのオブジェクトを追加する。
どのクローズドキャプションデータベースを使用するかはわかったが、どの滝に対してそれを行うかは画面のオブジェクトは知らない。
滝オブジェクトを選択して、コンポーネントの追加。
CCSource(スクリプト)を追加してみよう。

Canvas Prefabにはすでにオブジェクトが入っているが、入っていないようなら、プロジェクトフォルダからドロップしてあげよう

こういった設定をして、滝に近づくと、文字が出る。



便利かもしれないが、何がなにやらさっぱりだ。
しかし、こういった機能も実装すると、ユーザビリティの向上になる。
なんとか、アセットを保存しつつ、いつかこういう場面に出くわしたら設定できるように検討しておきましょう。
お疲れさまでした。
いよいよ最後の単元、UIですね。
次回もがんばりましょう