几周以来,我一直在研究解决方案,我认为是时候伸出援手了。我正在尝试制作一个在控制器按下时播放声音的按钮,每个人都会听到那个声音。使用 VRTK 和 PlayoVR,我可以制作一个非联网版本,玩家可以将手伸入一个立方体,点击控制器的触发器,它会发出声音。
这是该立方体的代码:
namespace VRTK.Examples {
using UnityEngine;
public class Whirlygig : VRTK_InteractableObject
{
public GameObject AudioSource;
public AudioSource LeftSpeaker;
public override void StartUsing(VRTK_InteractUse currentUsingObject =
null)
{
AudioSource.GetComponent<AudioSource>().Play();
}
}
}
我迷路的地方是如何将它与 Photon Unity Networking 联网。这就是我所拥有的:
namespace PlayoVR
{
using UnityEngine;
using VRTK;
using UnityEngine.Video;
using NetBase;
public class PlaySync : Photon.MonoBehaviour
{
public AudioSource LeftSpeaker;
public GameObject Whirlgig;
private bool StartUsing;
// Use this for initialization
void Awake()
{
GetComponent<VRTK_InteractableObject>().InteractableObjectUsed +=
new InteractableObjectEventHandler(DoPlay);
}
void DoPlay(object sender, InteractableObjectEventArgs e)
{
StartUsing = true;
}
// Update is called once per frame
void Update()
{
// Handle firing
if (StartUsing)
{
CmdPlay();
StartUsing = false;
}
}
void CmdPlay()
{
photonView.RPC("NetPlay", PhotonTargets.All);
}
[PunRPC]
void NetPlay()
{
LeftSpeaker.Play();
}
}
}
正如你可能看到的,我是一个初学者。使用此代码,当我将手放在立方体中并按下触发器时,什么也没有发生。如果有人可以提供任何帮助甚至替代方案,我将不胜感激。
亲切的问候, TheMusiken