バージョン
Wwise Unity Integration Documentation
|
このファーストパーソン3Dマップには、道沿いにいくつかの"ステーション"があります。ステーション毎に、簡単な説明の書かれた看板が脇にあります。簡単に参照できるように、各ステーションのアセットがシーン階層に入れてあります。
フットパスと最初のステーションを通して、スクリプトやトリガーボリュームを使ってフットステップシステムを作成する方法をデモします。
Wwise Projectでフットステップシステムの実装が推奨通りに行われ、地面タイプ別にRandomコンテナがあり、それらがSwitchコンテナに入っています。フットステップをポストするには Footstep
イベントを使い、地面の材質は Footstep_material
スイッチグループで制御します。
シーンの地形は、草、砂利、木板、土という4種類のテクスチャに分けてペイントしてあります。それぞれの地表面タイプを歩き回ると、フットステップサウンドも合わせて変化します。
これを達成するためにBox Colliderが各ゾーン上に配置されています。Footstep_Material
スイッチの設定は単純で、Switch ValueをWwise Picker WindowからBox Colliderにドラッグするだけです。First Person ControllerがColliderに入った時にSwitchをオンにするには、 "AkTriggerEnter"トリガーのAk Switchスクリプトをトリガーして、"Use Other Object"チェックボックスがチェックされていることを確認する必要があります(Inspector Window表示の通り)。
非常に初歩的なフットステップのスクリプトが実装されていて、プレイヤの移動中は0.3秒ごとに Footstep
イベントがポストされます。このスクリプトはFirst Person Controllerに添付してあります。これは、スクリプトを使ってイベントをWwise SoundEngineにポストする方法を表しています。
このステーションでは、カスタム設定したイベントトリガーをUnityで作成する方法と、イベントコールバックの使い方を示します。
単純なボタンスクリプトに、プレイヤがボタンに十分近づいた時に実行されるDelegateの入った単純なボタンスクリプトを準備し、キーボードやコントローラのキーが押されるように設定します。別のスクリプトの AkTriggerButtonPress
がこのDelegateに登録され、親クラスの AkTriggerBase
から triggerDelegate
を呼び出します。AkTriggerBase
から継承することで、カスタム設定したトリガーがWwise Component Inspectorウィンドウの"trigger"リストに表示されるようになります(例えばボタンに添付されたAk Ambientなど)。カスタムトリガーについては Wwiseイベントのトリガーを追加する を参照してください。
このイベントが、WAVマーカを含むサウンドファイルの再生を始めます。イベントに関連するマーカコールバックを登録することで、パネルのサブタイトルの更新が可能になります。これを達成するには、Ak AmbientのInspectorで"Use Callback"オプションを選択します。次にスクリプト(SubtitleDemo.cs
)が含まれたGameObject (SubtitleSign
)が"Game Object"ボックスにドラッグ&ドロップされました。コールバックがトリガーされた時に実行するCallback Function (MarkerCallback
)の名前を入力して、Callback Flagsとして"Marker"が選ばれました。SubtitleDemo
のコードを見ると、Callbackファンクションは事前定義された文字列アレイからサブタイトルを読み、インデックスとして MarkerCallback
の uIdentifier
フィールドを使っただけだということが分かります。コールバックの詳細は AkAmbient をInspectorで使う を参照してください。
このステーションでは、UnityのAkWwiseTriggerコンポーネントを使ってミュージックStingerを再生する方法を示します。 このデモは Subtitleデモ で説明されているトリガーメソッドとは異なります。ミュージックStingerをWwise Projectに実装する方法については、スティンガー(Stinger)の追加を参照してください。
Wwise Projectでは、Interactive Music Hierarchyに2つのMusic Segmentが用意されています。1つめのセグメントの MUS_RotTR_Cue2_Safe_4bars_85BPM
は、4小節単位のオーケストラ曲を再生するミュージックセグメントであり、2つめのセグメントの MUS_RotTR_Cue2_Stinger_85BPM
は、ドラマ風のミュージックキューです。オーケストラ曲では、2つめのMusic Segmentが Stinger
というトリガーにリンクされています。
Unityでは、シーンに2つのボタンが用意されており、1つはミュージックのEventをトリガーし、もう1つはStingerを起動します。望み通りの結果を達成するために、EventとAkWwiseTriggerのあるAkAmbientは PlayMusicButton
と関連付けられています。両方のコンポーネントが同じGame Objectを共有する必要があるためです。 TriggerButton
には AkWwiseTrigger.HandleEvent
を参照するButton Scriptがあるため、Stingerと関連付けられたサウンドを再生できます。
WwiseプロジェクトでMusic Stingerに関連付けられているMusic Segmentがあらかじめコールされている場合にのみMusic Stingerを再生できます。そのため、最初に PlayMusicButton
を押しても、 TriggerButton
は可聴音を再生するだけです。
WwiseDemoSceneとSpatialAudioSceneにはシンプルなWarp Zoneがあります。プレイヤーがWarp Zoneに足を踏み入れると、シーン間をすばやく移動できます。
シーンにあるゾーン内のサウンドに関して、どのようにエフェクトを提供できるのかを、このStationで見せることができます。EnvironmentZoneに含まれる2つの洞穴(ここでも1つのBox Colliderがトリガーを担っている)があり、AuxBusがそれに対して追加されている(Wwise Pickerウィンドウからドラッグ&ドロップして追加)。
Wwiseで2つのAuxiliary Busを作成して、それぞれ異なるエフェクトを入れてあります。さらにフットステップやLittle Sequenceは"Use game-defined Auxiliary sends"にチェックが入っています。
EnvironmentZone内からWwiseイベントをポストすると、そのサウンドがゾーンと関連性のあるAuxBusにルーティングされます。
このステーションでEnvironment Portalコンポーネントのデモも確認できます。これは、2つの環境間の空間的な切り替わりを表します。デモの3つのボタンを使い、Environment PortalがAuxiliaryバスのミキシングにどう影響するかを確認できます。
まず環境ポータルを作成するには、グラフ軸のいずれかでAk Environemnts2つにタッチするBox Colliderを1つ作成します(このデモではポータルが'z'軸上でRedゾーンとBlueゾーンにタッチします。I次にAk Environment Portalコンポーネントを追加して、正しい軸を選択します。ミックスされるこの2つの環境は、自動的にフィルインされます。
EnvironmentやEnvironment Portalの詳細は AkEnvironmentやAkEnvironmentPortalをInspectorで使う を参照。
このステーションでは、UnityのTimelineでAkEventTrackとAkRTPCTrackを使う方法を示します。2つのCubeがあり、ボタンを押すと、アニメーションでお互いに向かって動き始め、インパクト(衝突)が起きると止まります。
Timelineを確認するには、Window->Timelineを選択します。次に階層でTimelineDemoオブジェクトを展開して、Timeline Demo Buttonオブジェクトを展開します。続いて、Buttonオブジェクトを選択します。CubeのアニメーションやWwiseイベントをコントロールするためのTimelineが、Timelineエディタに表示されます。Timelineは、ButtonオブジェクトのPlayable Directorコンポーネントでコントロールできます。
Timelineには、2つのCube用に、それぞれのアニメーショントラックが1つずつ、入っています。これらのトラックを使って、各Cubeのz座標を時間の経過とともにアニメーションするのに使います。また、TimelineにはAkEventTrackとAkRTPCTrackも含まれ、それぞれが白と赤のタブでマークされています。AkEventTrackに2つのAkEventPlayableクリップが含まれ、1つ目はPlayCubeMovementのWwiseイベントをトリガーするもの、2つ目はPlayImpactのWwiseイベントをトリガーするものです。これらのWwiseイベントの名前は、クリップに表示されています。名前を完全に表示させるには、Timelineエディタのビューの大きさを変えて、ズームインする必要があるかもしれません。PlayCubeMovementのWwiseイベントは、ピッチをRTPCで調整するサイン波ソースを再生します。このRTPCの名前は、CubeAccelerationです。Cubeがお互いに向かっていくにつれ、時間の経過とともにAkRTPCTrackがRTPCを増加させます。これによってサイン波のピッチが増大して、Cube同士がお互いに加速していく様子をシンプルなサウンドエフェクトで表現できます。
このステーションで、モーション機能のデモを見ることもできます。プレイヤー階層に"Motion listener"というゲームオブジェクトがあります。このゲームオブジェクトは、モーション対応のプラットフォームのモーションデバイスに送信するアウトプット用に設定されています。どのアウトプットも、データを受信する複数のリスナーが必要です。モーションリスナーにAKゲームオブジェクトやAkオーディオリスナーもあるのは、このためです。Cubeインパクトでモーションエフェクトを使うには、2つの重要な準備があります。まず、インパクト音を、Wwiseプロジェクト内のWwise Motionシェアセットを使うアウトプットバスに送る必要があります。次に、モーションアウトプットに使うリスナーを、インパクトイベントをポストするエミッターのリスナーに追加する必要があります。アウトプットを追加する方法について、AkMotionListenerスクリプトに例があるので参照してください。
注記: Androidでモーション機能をサポートするには、アプリケーションのマニフェストにバイブレーションのパーミッションを含める必要があります。Unityは、アプリケーションの内容に基づいて自動的にマニフェストを生成します。Handheld.Vibrate() へのコールを追加すれば、マニフェストに必要なパーミッションを追加できます。 |
Timelineインテグレーションの詳細は、 WwiseのTimelineインテグレーション を参照してください。