menu
目次
-
レッスン
音楽は、サウンドスケープにおいて、中心的で常時アクティブな要素であることが多いので、コールバック使用の恰好の候補です。このレッスンではコールバックを音楽にインテグレートし、音楽のテーマにグラフィック側が反応するようにします。音楽的な機能からノティフィケーションを受け取って、ゲームのエレメントをコールし、それらが音楽に反応して動いているかのように、例えば音楽のリズムに合わせて木がダンスしているかのように、できます。
Wwise Adventure Gameのリージョンの音楽には6つの異なるテーマがあり、すべて、テンポやキーが同じです。

AkEventやAkAmbientのコンポーネントを使えば、コールバックの設定は、比較的簡単にできます。どちらのコンポーネントにもUse Callbacksというプロパティがあり、これを設定すれば、コールバック作成に必要な情報を設定できるのです。

コールバックをするには、2種類の情報を定義しておきます。最初に Callback Function をアサインし、このファンクションがどの Game Object にあるのかを決めます。次に、このCallback Functionをいつコールするのかを指定する必要がありますが、それには Callback Flags (スクリプトでは Callback Type と呼ばれることも)を、1つ以上選択します。この2種類の情報を、イベントをコールするときに一緒に送ると、Callback Typeが実際に起きたときに、Callback Functionプロパティで指定したファンクションがコールされます。これから、Wwise Adventure Gameのミュージックのテンポに基づいて、木の大きさを変化させてみます。まず、Music_RegionのEventをAkEventコンポーネントからポストし、次に、木にRhythmActionsスクリプトを追加します。

最後に、コールバックで、RhythmActionsスクリプトをMusic_RegionのAkEventからコールします。
-
Unityのメニューで、 Audiokinetic > Certification > 301 > Lesson 7 を選択し、 Callbacks using Components を選択します。
Music_RegionのEventをポストするAkEventは、ゲームオブジェクト単位でコントロールされるものではなく、音楽自体にポジションはないので、どのゲームオブジェクトにでも追加できます。簡単に使えるように、AkEventをWwiseゲームオブジェクトに追加してください。
-
Hierarchyで Wwise ゲームオブジェクトを選択します。
-
Inspectorで Add Component をクリックし、 AkEvent を検索して選択します。
-
Event Nameプロパティで Events > Music > General を展開し、 Music_Region を選択します。
Trigger Onプロパティのデフォルト設定があるので、これで、ゲーム初期化のときに音楽をポストする準備は終わりです。コールバックを使うには、まず、コールバックを送る対象のファンクションを(該当のゲームオブジェクトと共に)、宣言します。そこで、まずTraining Areaにあるtree(木)に、RhythmActionsスクリプトを追加するところから始めます。
-
Hierarchyで TrainingArea_Tree_01 ゲームオブジェクトを選択します。
-
Inspectorで Add Component をクリックし、 RhythmActionsスクリプトを探して選択します。
RhythmActionsスクリプトをゲームオブジェクトに追加すると、そのゲームオブジェクトの倍率を変更できます。Modificationsクラスを使い、ゲームオブジェクトの倍率を、X軸、Y軸、Z軸に沿って拡大縮小できます。
このスライダー値を自由に変更して構いませんが、デフォルト値を使えば、木が呼吸する様子をはっきりと出せるはずです。RhythmActionsスクリプトに'PushActions'というpublicのファンクションを作成してあります。
このファンクションは、Modificationsクラスのスライダー値に基づいてゲームオブジェクトの倍率を変更するものです。Modificationsプロパティの設定を徐々にTransformコンポーネントに変換(「プッシュ」)し、また元に戻してくれます。WwiseゲームオブジェクトのAkEventコンポーネントに戻り、TrainingArea_Tree_01ゲームオブジェクトをコールバックの参照先として追加します。
-
Hierarchyで Wwise ゲームオブジェクトを選択してから、 AkEvent を展開し、 Use Callbacks を有効にします。
コールバックでPushActionsファンクションをトリガーするには、スクリプトを追加したゲームオブジェクトを追加し、ファンクション名を正確に書く必要があります。
-
TrainingArea_Tree_01 ゲームオブジェクトを、HierarchyからAkEventの Game Object プロパティまでドラッグします。
-
Callback Functionプロパティに、 PushActions と入力します。
最後に、Callback Flagを追加する必要があります。これらのフラグの特徴の1つとして、再生中のMusic SegmentのBeat、Bar、Entry、Exitなど、Music Segment内のマーカーノーティフィケーションを参照することができます。MusicSyncUserCueとMarker以外の通知(ノーティフィケーション)は、Wwiseで何かを準備する必要はありません。
試しにMusicSyncBarという、対象Eventが途中でBarに到達するたびにコールされる通知機能(ノティフィケーション)を使います。
各Callback Flagについての詳細は、 Wwise SDK Documentation を確認してください。
-
Callback Flags のproperty drawerで、 MusicSyncBar だけを選択します。
以上です。ゲームをプレイして、木々が動き出すのを見てください。
-
Playモードに入り 、PlayerをVillage方面にある TrainingArea_Tree_01 のゲームオブジェクトまで近づけます。
木が呼吸しているかのように、ゆっくりと膨らんだり、へこんだりします。RhythmActionsスクリプトをMusic_RegionのEventに接続することで、木が音楽のリズムに合わせて大きくなり、音楽とのビジュアル的なつながりを生み出せたのです。さらに、この方式では、もし音楽が停止または一時停止した場合は、木の動きが必ず止まります。このアプローチは音楽のテンポ変更にも対応しているので、テンポも変えてみてください。
-
WwiseでRemoteをクリックしてWwise Adventure Game (Editor)を強調表示にし、Connectをクリックします。
-
ツールバーのSearchフィールドに"Music region"を入力し、次に Music_Region のSwitch Containerをクリックします。
-
Music_RegionsのProperty Editorで、 Playback Speed 値を 2.5 までドラッグします。
-
Unityに戻り、同じ木を見てみます。
木は相変わらず音楽のリズムに合わせて動いていますが、その周期が、音楽のテンポを上げたので、明らかに速まっています。もし木がサイクルを完了できない(サイズを大きくし、小さくできない)場合は、RhythmActionsスクリプトのSpeedパラメータを上げて、動きが、次のコールバックノティフィケーション前に完了するようにします。これで Playモードを終了 できます。
![]() | |
今後の演習用に、Playback Speedを1に戻すのを忘れないでください。 |
AkEventやAkAmbientコンポーネントは、数個程度のゲームオブジェクト用にコールバックを設定するには、一番早い方法です。ただ、多数のゲームオブジェクトに適用したい場合は、この方式では一個一個追加しないといけないので、理想的ではありません。次のセクションで学ぶ、スクリプトからコールバックを有効にする方法の方が、メリットが大きいです。