私はマルチプレイヤーで車のゲームをしています。 すべて正常に動作し、マスターとクライアントが部屋に正常に接続しています。 (私はマルコポーロのチュートリアルを使用しています) 問題は、他の車が画面内を移動しているのを見たときに、車をテレポートすることで位置が更新されることです。いつも現れ、消える。私のコードのPhoton Unity3d:OnPhotonSerializeView()が動作しません
パート:が、私の光子のバージョンでは、私はより多くのオプションを持っている:私の車のプレハブで
PhotonNetwork.automaticallySyncScene = false;
public class CNPlayerManager : Photon.MonoBehaviour
{
...
void FixedUpdate()
{
if (photonView.isMine)
{
//it works fine
}
else
{
transform.position= Vector3.Lerp(transform.position, this.correctPosition, Time.deltaTime * 5);
transform.rotation= Quaternion.Lerp(transform.rotation, this.correctRotation, Time.deltaTime * 5);
}
}
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.isWriting)
{
stream.SendNext(transform.position);
stream.SendNext(transform.rotation);
}
else
{
this.correctPosition = (Vector3)stream.ReceiveNext(); //Line 100
this.correctRotation = (Quaternion)stream.ReceiveNext(); //Line 101
}
}
私PhotonViewはこのようなものです。所有者には、「実行時に設定」と「固定」があります。そして "観測されたコンポーネント"では、私は2つのコンポーネント、私の車のプレハブとスクリプトCNPlayerManagerを持っています。
私は2台の車で遊んでいるとき、最初の車で、時々このエラーが発生します: "IndexOutOfRangeException:配列インデックスが範囲外です。PhotonStream.ReceiveNext()..." 100行目。 2台目の車私は同じことを得る。
お願いします。