2017-05-11 23 views
0

Ich arbeite in einem Auto-Spiel mit Multiplayer. Alles funktioniert gut, Master und Kunden sind gut mit dem Zimmer verbunden. (Ich habe Marco Polo Tutorial verwendet) Das Problem ist, wenn ich andere Autos auf dem Bildschirm bewegen sehen, aktualisiert die Position durch Teleportieren der Autos. Erscheint und verschwindet die ganze Zeit.Photon Unity3d: OnPhotonSerializeView() funktioniert nicht

Teil meines Code:

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 

    } 
} 

Mein PhotonView in meinem Auto Fertig ist wie folgt: aber in meinem Photon Version ich mehr Möglichkeiten habe. In Owner habe ich "zur Laufzeit eingestellt" und "Fixed". Und in "Beobachtete Komponenten" habe ich 2 Komponenten, mein Auto-Prefab und das Skript CNPlayerManager.

Als ich mit 2 Autos, im ersten Auto spielen manchmal ich diese Fehlermeldung erhalten: „IndexOutOfRangeException. Array-Index außerhalb des zulässigen Bereichs PhotonStream.ReceiveNext() ...“ In der Zeile 100. Im zweiten Auto Ich bekomme das Gleiche.

Könnten Sie mir bitte helfen?

Antwort

0

was meinst du, wenn du sagst, dass du "das Auto-Prefab" beobachtest? Ich denke, es genügt, in diesem Fall nur das CNPlayerManager-Skript zu beobachten, da es die Positions- und Rotationssynchronisation handhabt.

Ich würde jedoch empfehlen, dass Sie sich die Skripte ansehen, die das PUN-Paket bereits enthält, insbesondere das PhotonTransformView-Skript. Dieser tut, was Sie erreichen möchten, und bietet auch einige Synchronisationsoptionen, die Sie überprüfen und sehen können, welche Ihren Bedürfnissen am besten entspricht.

Bitte lassen Sie uns wissen, wenn Sie noch auf Probleme stoßen.

Verwandte Themen