レッスン 5
目次
-
レッスン
Switchはゲームオブジェクト単位に作用し、Stateはグローバル全体に作用しますが、Game Parameterはどちらの場合でも使えます。前セクションの 'Game ParameterをWwise-Typesで設定する' で説明したとおり、Game Parameterプロパティを宣言すると、SetValue()ファンクション、またはSetGlobalValue()ファンクションを使えます。試しに、Enemy_EvilHead_MovementSpeedのGame Parameterが、各Evil Headに、どのようにゲームオブジェクト単位で使われているのかを見てみます。
-
Unityで Audiokinetic > Certification > 301 > Lesson 5 を選択し、 Understanding Global and Game Object Scope を選択します
このシーンでは、Adventurerが3体のEvil Headsに取り囲まれています。このうち1匹のEvil HeadがPlayerをアタックすると、Evil Headは一連のアクションを実行します。まず、Adventurerを見て、回りがら近づき、これからアタックするという意思表示をします。次に、Adventurerに向かって突進し、Adventurerに衝突すると、噛みつきます。この一連の動作はそれぞれ、周知する音があるので、Playerは見なくても分かります。さらに、hover(宙を舞う)音がループしているので、Evil HeadとMain Cameraの位置関係が、常にリスナーに伝わります。やや隠れたオーディオキューであるEvilHead_Hover_LPというSound SFXには、Wwise Tremolo Effectがあり、このエフェクトには、各Evil Headのそれぞれのスピードに対するRTPCを使った周波数マッピングが適用されています。これには、PlayerがEvil Head達の今の動きを把握できるように、助ける意味があります。あなたに向かってくるEvil Headが何匹いようとも、必要なGame Parameterは1つだけです。それではゲームをプレイし、Game Object Profilerを使って接続し、Game Parameterをゲームオブジェクト単位で使う方法を探ります。
-
WwiseでLayouts を選択し、 Game Object Profiler を選択します。
接続する前に、これからの観察対象を、Evil Head達と、Enemy_EvilHead_MovementSpeedに限定します。Game Object ProfilerレイアウトのGame Sync Monitorにはすべてのゲームオブジェクトが表示されますが、Object Filterを使用し、特定のオブジェクトを選択して観察できます。
-
Game Sync Monitorで、Object Filterボックスの横にあるBrowse For Object(…)をクリックします。
-
Enemy_EvilHead_MovementSpeed のGame Parameterを選択して OK をクリックします。
これでEnemy_EvilHead_MovementSpeedという、Game Parameterを使用するWwise Adventure Game内のすべてのオブジェクトを観察する準備ができました。次に、ゲームに接続します。テストをするだけなため、ダメージを受ける能力を無効にしておきます。
-
シーンを Play し、ESCを押してWAGのメニューに入り、 GOD MODE を選択します。
-
Wwiseツールバーの Remote, をクリックし、Wwise Adventure Game (Editor) を強調表示にし、 Connect をクリックします。
-
Evil Head達のアタックを5回から10回ほど避けるようにしつつ、たまには攻撃しても大丈夫です。
-
Playモードを終了 し、Wwiseに戻ります。
Villageの方に走っていってはダメです!保護されているので、EvilHeadは、近づくと死んでしまいます。 |
WwiseのGame Object Profilerでは、すべてのEvilHeadが1つのグラフで重ねて表示されます。
Evil Headの攻撃があるたびに、急激なアタックカーブがあり、動きが激しくなったことを表しています。Evil Headの攻撃が終わると、Evil Headがもう一度アタックする準備ができるまで、カーブはディケイします。カーブが突然、急上昇するのは、Evil Headがウェポンを使ってアタックされ、Evil Headが中断されたときです。気づいたかもしれませんが、Game Parameterのカーブは、Game Objectごとに異なります。逆に、各Evil Headのそれぞれの行動を表しています。Enemy_EvilHead_MovementSpeedというGame Parameterは、以下のSetMovementSpeed()ファンクションからも分かるとおり、SetValue()ファンクションで設定されます。
private void SetMovementSpeed(float speed) { MovementRTPC.SetValue(gameObject, speed); }
上記ファンクションでは、'gameObject'変数と、'speed'変数が、SetValue()ファンクションに送られます。Game Parameterに設定するのは speed という変数であり、Enemy_EvilHead_HoverのEventをポストしたゲームオブジェクトは gameObject です。
1つのGame Parameterをグローバル単位とゲームオブジェクト単位の両方で使った場合は、そのゲームオブジェクトに関して、ゲームオブジェクト単位(SetValue())の方が、必ずグローバル単位(SetGlobalValue())の設定よりも優先されます。例えば、グローバル単位で設定したTime_of_DayのGame Parameterを考えます。例えばWoodlands Ambienceというゲームオブジェクトに対し、別のスクリプトからSetValue()ファンクションを設定すると、このSetValue()の方が優先され、Woodlands Ambienceゲームオブジェクトに関しては、ゲームオブジェクト単位のGame Parameter値が有効になります。つまり、グローバル単位でTime_of_DayのGame Parameterが変化したとしても、Woodlands Ambienceは影響を受けません。 |