私のプロジェクトでは、1人目のカメラが1台、mouselook、入力コントローラー、カメラなどの最初の人物のすべてが取り除かれた2台のプレハブがあります。私の究極の目標は、カメラ付きでプレハブを作成し、rpcを送信して、他のすべてのクライアントにダミーのプレハブを作成して、最初の人のプレハブと同期させることです。私が直面している問題は、最初の人のプレハブのPhotonViewからrpcを送信しようとすると、PhotonView IDが他のクライアントにまだ存在しないため、rpcは他のクライアントに呼び出されません。RPCを使用してプレイヤーを起動する
次のコードは、NetworkManagerスクリプトの階層にある空のゲームオブジェクトにあります。
void OnJoinedRoom(){
GameObject MyPlayer = (GameObject) Instantiate (FPSPlayer,spawnPoint.transform.position, spawnPoint.transform.rotation);
FPSPlayerPhotonView = MyPlayer.transform.root.gameObject.GetPhotonView();
int id = PhotonNetwork.AllocateViewID();
FPSPlayerPhotonView.viewID = id;
FPSPlayerPhotonView.RPC("SpawnMyPlayerAsRemote", PhotonTargets.OthersBuffered,id, spawnPoint.transform.position, spawnPoint.transform.rotation);
}
[PunRPC]
void SpawnMyPlayerAsRemote(int id, Vector3 pos, Quaternion rot){
GameObject MyRemotePlayer = (GameObject)Instantiate (RemotePlayer, pos,rot);
RemotePlayerPhotonView = MyRemotePlayer.transform.root.gameObject.GetPhotonView();
RemotePlayerPhotonView.viewID = id;
}
RPC onを呼び出したPhotonViewオブジェクトに、添付されたスクリプトの1つにSpawnMyPlayerAsRemoteメソッドがありますか?そうでなければ、そのようなRPCを呼び出すときにログにエラーが発生するはずです。 – photonians