イラスト、モデリング、Unity、VR関連

unityとかblenderとかvr関連の作業メモ

Unity Unetで各クライアントで音を出す方法

++NetworkServer.Spawnを使う。

SpawnするオブジェクトにAudioSourceを付与するなどしておけばいい。欠点として、SpawnはNetworkMangerに登録したオブジェクトしか出来ないので、音声のみを出したい場合などには不向き

 

++CommandとClientRpcを使う

CommandからClientRpcをコールし、各クライアントでAudioSourceを付与したオブジェクトを出現させる。Voicesには予め音声が登録されており、AudioPartはAudioSourceを付与するためのコンポーネント

  [Command]
  public void CmdPlayVoice(Vector3 at){
    RpcPlayVoice(at,Random.Range(0,Voices.Length-1));
  }

  [ClientRpc]
  void RpcPlayVoice(Vector3 at,int id){
    var obj = new GameObject("PlayVoice");
    obj.transform.position = at;
    var ap = obj.AddComponent();
    ap.AClip = Voices[id];
    ap.IsLoop = false;
    ap.Is3D = true;
    ap.IsPlayOnStart = true;
    ap.SetAudio();
    ap.Play();
  }