ボイスチャットの音声はある程度の再生フレームをバッファリングして送受信します。1フレームずつ音声データを受信するわけではないので、「再生している」ことと「受信している」ことはイコールにはなりません。
相手の声の発信に対しMonovitVoiceFilterやMonovitVoiceWrapperのOnBeginDecodeメソッド等を使用して「相手からの音声データが届いているかどうか」「相手からの音声データをでコードしているかどうか」で判定した場合、おそらく「実際の音声出力に対し、途切れ途切れで検知する」ようにしかならないと思います。
この場合の解決策としては、VoiceChatの機能とは切り離して、AudioSourceコンポーネントから「再生中かどうか」を直接見た方が早いと思います。
public class Foo: MonobitEngine.MonoBehaviour { public void Update () { if (gameObject.GetComponent<AudioSource>().isPlaying) { // この時点で発信中 } base.Update(); } } |