PUN 2 音频源播放多次



我有与我的角色相关联的动画事件,这些事件在他们走路时会播放随机的脚步声。我正在尝试将其设置为多人游戏,但我遇到了一些问题。对于一个人,声音只在应该播放一次的时候播放一次。但是,在 2 人中测试时,当一名玩家跨步时,它会同时播放每个脚步两次。每个播放器都有一个音频源组件。两种脚步声都来自玩家跑步的音频源,因此不是两个玩家都播放相同声音的情况。关于为什么声音被欺骗并同时播放的任何想法?双重声音来自同一客户端,但仅当该客户端处于多人游戏中时。这不是其他人走路的时候,只有客户。我一定是设置了错误的东西,或者用我的 RPC 把东西放在了错误的地方。

1个播放器,1 个音频源:声音播放一次

2 个具有自己的音频源的播放器:声音重复并同时播放

2 个播放器,仅为一次行走启用音频源:声音仍可播放两次

从我的播放器代码

public void PlayFootstep()
{
int clipPick = Random.Range(0, footstepArray.Length);
GetComponent<AudioSource>().clip = footstepArray[clipPick];
photonView.RPC("PlayFootstepRPC", RpcTarget.All);
}
[PunRPC]
private void PlayFootstepRPC()
{
if (GetComponent<AudioSource>().isActiveAndEnabled && GetComponent<PlayerMovement>().ySpeed > 1.15)
{
GetComponent<AudioSource>().Play();
}
}

如果通过动画事件调用 PlayFootstep,并且您通过 PhotonAnimatorView 同步了动画,则 PlayFootstepRPC(( 会被调用多次,每个连接的客户端调用一次。

PhotonAnimatorView制作一个对象,在每个客户端上播放相同的动画。PlayFootstep 函数在每个客户端上被调用,每个客户端将 RPC 发送到自身和其他客户端,RPC 将播放声音。

我建议你不要通过RPC播放脚步声,而是在本地播放(因为动画事件会为你处理它(,或者在调用RPC之前添加对PhotonView.IsMine的检查。

相关内容

  • 没有找到相关文章

最新更新