この記事シリーズでは、Unity公式が配布しているゲーム「2D Character」にWwiseでサウンドを組み込む方法を綴っています。
※当ブログではMacOS環境で作業を進めています。他OSを使用している場合は表示や操作方法に差異がある可能性があります。
はじめに
前回の記事ではUnityとWwiseの統合をし、サウンドをゲームに反映させる下準備を整えました。
今回は実際にゲームにサウンドを組み込んでいこうと思います。
※ Wwiseの基礎用語をざっくりまとめた記事がありますので、こちらの記事をあらかじめ読んでいただくとわかりやすいかと思います。
-1.Wwiseにジャンプの効果音をインポート
-2.ジャンプのイベントを作成
-3.Eventとオーディオファイルを紐付ける
-4.オーディオファイルをトリミングする
-5.サウンドバンクを構築する
-6.Wwiseの次はUnity側の設定へ
1.Wwiseにジャンプの効果音をインポート
最初にWwiseにジャンプの効果音をインポートしましょう。
まずは前回の記事で作成したWwiseプロジェクトを開き、画面左上のタブのLayout > Designerを選択してください。サウンド全般、特に効果音を扱う場合には基本的にこのレイアウトを使います。
次にオーディオファイルを用意します。自作の効果音をニコニコモンズにて投稿していますので、下記URLからダウンロードしてください。
【効果音】【SE】ジャンプ(高さと長さ差分8種類) – ニコニ・コモンズ
http://commons.nicovideo.jp/material/nc219075
オーディオファイルをダウンロードしたら、Wwiseに戻りPorject Explorerウインドウ内のAudioタブを開きます。
ここは端的に言えばオーディオファイルを取り込み整理する場所です。
Audioタブを開くといくつかフォルダが表示されますが、今回はActor-Mixer Hierarchyにアクセスします。ここは主に効果音を置く場所です。
Actor-Mixer Hierarchyの中にすでにDefault Work Unitという項目がありますが、これはオーディオデータやプログラムを包括するためのまとめ役のようなものです。基本的にはこの項目の中にデータを追加していき、プロジェクトを構築していくことになります。
Default Work Unitを右クリックし、New Childを選択すると複数の追加オブジェクトが表示されます。ここでは効果音を追加する際の基本オブジェクトである、Sound SFXを選択します。
作成したオブジェクトにダブルクリックし「Jump_SE」と命名しましょう。(この名前はのちのちプログラムで呼び出す必要があるため、半角英数字、スペースは使わず_を使いましょう)
この時点ではおそらく文字が赤く表示されている筈です。これはこのオブジェクトにオーディオファイルが紐付けされていない状態を意味します。
「Jump」を右クリックし、「Import Audio FIles」>「Add Files」で先ほどダウンロードしたオーディオファイルを選択し「Import」をクリックしオーディオファイルを紐付けします。
「Jump」の文字が青色になっていれば、オーディオファイルの紐付けが無事成功していることを意味します。
2.ジャンプのEventを作成
オーディオファイルをインポートすることに成功しましたが、これだけではまだ効果音として扱うことはできません。
サウンドをゲーム内で再生させるためには、ゲームエンジン側からプログラムの名前を呼び出し、Wwiseでそのプログラムを受け取り再生する、という手順が必要です。
Eventはその呼び出しを受け取るためのオブジェクトです。
(Eventについては下記の記事で詳しい解説をまとめています)
ざっくりWwise【Game Syncsオブジェクト編】
まずはProject ExplorerウインドウのEventタグを開きEvent>Default Work Unitを右クリックしましょう。New Child>EventでEventオブジェクトを追加できます。
作成したEventオブジェクトをダブルクリックし「Jump」と命名します。
これで「Jump」Eventが用意できました。
3.Eventとオーディオファイルを紐付ける
Eventを用意することができましたが、まだこのEventの中には何も入っていない状態です。ですので先ほど取り込んだオーディオファイルを放り込みます。
「Jump」Eventをクリック選択し、右のウィンドウにJump-Event Editerと表示されている状態にします。
次にProject ExplorerウィンドウのAudioタブを開き、先ほど作成したJump_SEオブジェクトを右のEvent Editerにドラッグアンドドロップしてください。
これで「Jump」Eventを呼び出すと「Jump_SE」が再生されるようになりました。
試しに「Jump」Eventを選択した状態で右下の再生ボタンを押すとサウンドが再生されるはずです。
4.オーディオファイルをトリミングする
さて、再生してみると8つのジャンプ効果音が再生されてしまい、効果音として使えたものではないことに気がついたでしょう。ですのでオーディオファイルを編集して単発の効果音として使えるようにしましょう。
Audioタブの「Jump_SE」を選択すると、右側中段に「Jump_SE-Contents Editor-1 Child」というウィンドウがあると思います。
ここには取り込んだオーディオファイルの元ファイルが表示されています。
表示されている項目のアイコンをダブルクリックすると「Source Editor」が開き、オーディオファイルの編集が可能になります。
Source Editorにはオーディオファイルの波形が表示されており、この状態で再生ボタンをクリックすると同期してバーが動きます。
波形画面の左下と右下にある四角形が始点と終点を表しています。これをジャンプの効果音として使いたい場所に移動させ、トリミングしてみましょう。
筆者は今回2番目の音を選びました。
「Jump」Eventを選択した状態で再生ボタンをクリックし、単発の音が再生されることを確認してください。
これでジャンプの効果音が鳴る仕組みができあがりました。
5.サウンドバンクを構築する
Wwiseの最後の工程がサウンドバンクの構築です。
サウンドバンクとはざっくり言うと、Wwiseで作成した全てのファイルをまとめたものです。DAWで言うバウンスのようなものですね。ゲームエンジン側はこのサウンドバンクの情報を読み込み動作します。
ではさっそくサウンドバンクを作成していきましょう。
Project ExplorerウインドウからSounBanks タブを開きSoundBanks>Default Work Unitを右クリックし、New Child>SoundBankでSoundBankオブジェクトを作成します。
名前は「_2dCharacterSB」とします。(オブジェクト名の頭文字に数字は使えないので_を入れてます)
サウンドバンクを作成する時にはLayoutsから「SoundBank」を選択しましょう。
次に「_2dCharacterSB」を選択した状態で、Eventタブを開き先ほど作成した「Jump」Eventを右側のSoundBank Editorにドラッグします。
これでサウンドバンクの中に「Jump」Eventを入れることができました。
最後に「Generate All」をクリックすればサウンドバンクが生成されます。
補足:エラーが出てサウンドバンクを生成できない場合
プロジェクトを新規作成して初めてサウンドバンクを生成する場合、「Completed with error」という表示が出て生成できない場合があると思います。おそらく「Motion Factry Bus」というオブジェクトが原因ですので以下の手順で対処してください。
1.Audioタブを開きMaster-Mixer Hierarchy>Default Work Unit>Motion Factory Busを選択します(レイアウトは「Designer」にしておいてください)
2.右側ウインドウの「Default_Motion_Device」と表示されている枠を「System」に変更する。
この対処法はWwiseの相談フォーラムで紹介されていたものです。また元に戻すことも可能ですので、とりあえず今はこれで対処しておけば問題ないと思います。
無事にサウンドバンクが生成できればWwiseでの作業は完了です。
Unity側で認識できているかを確認
最後にWwiseプロジェクトを保存終了し、Unityを開き作成したWwiseプロジェクトが認識できているか確認しましょう。
前回の記事で行ったUnityとWwiseの統合が完了していれば、「Wwise Picker」ウインドウに「2d Character Sound」プロジェクトが表示されているはずです。
認識できていなさそうであれば、もう一度サウンドバンクを生成しなおしてWwiseプロジェクトを保存終了した上で、「Refresh Project」ボタン、「Generate SoundBanks」ボタンをクリックしてください。
それでも認識できなければ「Wwise Launcher」を開きもう一度統合し直しましょう。
6.Wwiseの次はUnity側の設定へ
お疲れ様でした、と言いたいところですがまだ効果音を鳴らすことはできません。次はUnity側で鳴らすタイミングをプログラムする必要があります。(q lll゚Д゚lll ヒィ────ノ)゚
めんどくさいですががんばりましょう!
とりあえず長くなりましたので、次の記事へいかせていただきます。