サウンドオブジェクト

プログラムで、プレーヤー間の情報共有を行うサウンドオブジェクトを作成することができます。
各プレーヤーを紐づけることで、影響範囲を限定することができます。

例)サウンドオブジェクトでプレーヤーAとBを紐づける。

craftv2_tips_program_doing_soundobject02.png

例)アクションの影響範囲をサウンドオブジェクトにすることで、プレーヤーAとBでのみ影響するようになる。

craftv2_tips_program_doing_soundobject03.png

スコープ

検索対象などを絞る目的で扱われる範囲のことを「スコープ」と呼びます。
検索に限らず、何らかの影響範囲などもスコープと呼ばれます。

例えば、ゲームの中でキャラクター1体を扱う場合、キャラクタの「オブジェクト」を何かしらの「ひな形(テンプレート)」やクラスといったものから作成することがあります。
この時、キャラクタ(オブジェクト)の単位で影響範囲を絞りたい場合が発生します。

プレーヤーも1つのスコープですが、プレーヤーを超えた制御や振る舞いを設定したい場合、プレーヤーよりも一つ上位のグループが必要になります。
サウンドオブジェクトは、プレーヤーをこのグループに設定することができます。

アクションのスコープ

データ側では、アクショントラックのインスペクターにサウンドオブジェクトのスコープの選択設定があります。
デフォルトでは全体になっており、全ての再生中のキューに影響を与えるようになっています。

craftv2_tips_program_doing_soundobject01.png

これをサウンドオブジェクトとした場合、サウンドオブジェクトの影響範囲内で相互作用するアクションに切り替わります。

craftv2_tips_program_doing_soundobject00.png

サウンドオブジェクトが設定されていないプレーヤーの場合は、そのプレーヤー再生中のキューに限定して作用するアクションになります。

スコープの機能拡張

criAtomExSoundObject_Create 関数を使用するときに、 ボイスリミットスコープの有効化 、カテゴリキューリミットスコープの有効化 といった機能の拡張が行えます。

例えば、対戦ゲームなどでキャラクター毎にカテゴリを用意していたとします。
キャラクターは通常は1人分の声でリミットをかけたいのでカテゴリキューリミット数は1とします。
大抵はこれで問題が無いのですが、同じキャラクターが選択された場合に問題が発生します。

同じ声の別キャラクタなので、それぞれのキャラクタごとに発音が管理されることが理想です。
ゲームの中ではキャラクタのオブジェクトを作成することになるので、一緒にプレーヤーとサウンドオブジェクトを設定してもらうことで、
同じデータのリミット管理をそれぞれのオブジェクトで個別に動作させることができます。

craftv2_tips_program_doing_soundobject04.png

例)ボイスリミットグループのオプションを使うことで、サウンドオブジェクト単位でのリミット動作に変化する。
プレーヤーAとBでは共有で1のリミットだが、それと別にプレーヤーCは1のリミットを持つ。

craftv2_tips_program_doing_soundobject05.png

例)カテゴリキューリミットのオプションを使うことで、サウンドオブジェクト単位でのリミット動作に変化する。
プレーヤーAとBでは共有で1のリミットだが、それと別にプレーヤーCは1のリミットを持つ。