您好我是多人游戏开发的新手,我正在使用光子语音,并希望在一个有很多玩家的房间内的两个玩家之间进行私人语音聊天。我被指示了 https://doc.photonengine.com/en-us/voice/current/getting-started/voice-for-pun?utm_campaign=sendgrid&utm_source=sendgrid.com&utm_medium=email 通过光子的支持,但我无法使它工作。我应该如何在这个多人游戏中进行私人语音聊天。请举例解释。谢谢
答案 0 :(得分:0)
Push To Talk有一个演示场景,展示了如何做到这一点。 让我尝试解释如何使用当前的Photon Voice实现播放器到播放器的语音聊天:
Photon Voice使用语音组(只有Photon LoadBalancing的“Interest Groups”)来分离语音通道/目标。
过滤传入的声音(选择“听到的内容”或“您想听谁”):
每个演员都需要订阅它感兴趣的语音组。默认情况下,所有演员都会收听音频组0,这可以被视为语音广播的全球音频组。如果您想收听发送给其他群组的语音,您需要订阅它们。您也可以取消订阅以前订阅的那些。执行所有操作的操作是:PhotonVoiceNetwork.Client.ChangeAudioGroups(byte[] groupsToRemove, byte[] groupsToAdd);
选择单个传输目标音频组(选择“您想与谁通话”):
每个演员都需要决定要传输音频的语音组。可以使用PhotonVoiceRecorder.AudioGroup
设置目标音频组。
因此,根据用例,您可以做的是:
PhotonVoiceNetwork.Client.GlobalAudioGroup
在此单个输入/输出组之间切换。如果您选择设置GlobalAudioGroup
,则无需致电ChangeAudioGroups
或设置PhotonVoiceRecorder.AudioGroup
,因为它已在您内部完成。在这三种情况下,您始终会听默认音频组0。
Photon Voice演示提供两种私人(1对1)语音聊天选项:
演示中的音频组以这种方式构建: 我们有4个演员的房间。 我们需要6个音频组。 对于每对演员,我们计算一个唯一的组代码。
以下是我们如何在A和B之间获得私人语音聊天的音频组(如果演员号码达到24我们有问题):
if (x < y)
{
AudioGroup = y + x * 10;
}
else if (x > y)
{
AudioGroup = x + y * 10;
}
else
{
// error
}
示例:演员1和2的音频组是12。
“计算”私人语音组的另一种方法是将演员号码用作音频组:每个演员订阅一个音频组,其代码等于其演员号码。每当您想要与远程演员交谈时,您只需将目标音频组(仅使用PhotonVoiceRecorder.AudioGroup
)设置为目标演员编号。
这种方法的优点是:
这种方法的缺点: