0 支持
(140 ポイント)
voicechatのサンプルを試したのですが、複数人で試すと誰がどのキャラクターから声を発信しているか分からないことが課題に上がり、

相手からの音声を受信している間、相手が操作するキャラクターの色を変える等、強調表示しようと試みています。

MonovitVoiceFilterやMonovitVoiceWrapperのOnBuginDecodeメソッド等を試していますが、上手くいきません。

http://www.monobitengine.com/vc/WebDoc/contents/Component/MonobitVoiceFilter.htm)

相手からの音声が届いていることを判別するメソッドなど、ご存じの方いらっしゃいましたら、ご教授いただけると幸いです。

回答 1

0 支持
(3.8k ポイント)

ボイスチャットの音声はある程度の再生フレームをバッファリングして送受信します。1フレームずつ音声データを受信するわけではないので、「再生している」ことと「受信している」ことはイコールにはなりません。

相手の声の発信に対しMonovitVoiceFilterやMonovitVoiceWrapperのOnBeginDecodeメソッド等を使用して「相手からの音声データが届いているかどうか」「相手からの音声データをでコードしているかどうか」で判定した場合、おそらく「実際の音声出力に対し、途切れ途切れで検知する」ようにしかならないと思います。

この場合の解決策としては、VoiceChatの機能とは切り離して、AudioSourceコンポーネントから「再生中かどうか」を直接見た方が早いと思います。

public class Foo: MonobitEngine.MonoBehaviour {

    public void Update ()
    {
        if (gameObject.GetComponent<AudioSource>().isPlaying)
        {
            // この時点で発信中
        }
        base.Update();
    }
}

(140 ポイント)
ご返信ありがとうございます。
MonovitVoiceだけで実装出来るのではと誤解していました。
AudioSourceコンポーネントを調べつつ、進めていきます。
丁寧な解説と実装例等々、助かります。ありがとうございます。
...