Jump to content
Unity Insider Forum

UNET Synchronisierung Rigidbody2D - Verhalten


Recommended Posts

Hallo Leute,

 

ich habe da mal eine Frage, wie man am besten mit Rigidbody2D-Synchronisierung in UNET umgeht bzw. ist mir klar, wie man generell mit UNET eine Verbindung zwischen Spielern herstellt und dann auch die Spielerobjekte synchron hält, aber ich habe ein Problem mit dem generellen Physik-Verhalten der Rigidbodys innerhalb eines Netzwerkspiels. Erstmal zu meinem Setup:

 

Im Prinzip wird ein PlayerController gespawnt, wenn ein Spieler sich connected. Der Server spanw dann (NetworkServer.SpawnWithClientAuthority) Objekte bzw. Spaceships für diesen Spieler mit Authorisierung. Die Spaceships kann der Spieler auch bewegen und es wird auch alles sauber synchronisiert zwischen den Clients. Mein Problem besteht nun aber, wenn ein Spaceship auf ein anders trifft bzw. wenn es eine Kollision gibt, da sich die Physik in einem Netzwerkspiel da anders verhält oder besser gesagt nur der Spieler selbst ja die Authorisierung hat und somit die Macht (Force) von einem anderen Objekt nicht weitergegeben wird, da die NetzwerkTransform-Komponente immer alles schön synchron hält und nur eigene Änderungen zulässt.

 

Noch ein Beispiel zur Verdeutlichung (rundenbasiertes Spiel, bei dem alle Bewegungen gleichzeitig ausgeführt werden):

Es gibt 2 Spaceships, die einem Spieler gehören. Das eine Spaceship hat keine Beschleunigung und steht nur im Raum. Nun wird das andere Schiff beschleunigt und trifft auf das stehende Schiff. Die Kraft wird weitergegeben und beide werde in die gleiche Richtung "gedrück".

Bei gleichem Aufbau mit 2 Spaceships unterschiedlicher Spieler passiert nun folgendes. Wenn das beschleunigende Spaceship auf das stehende trifft, dann bleibt das stehende auch wie ein Stein stehen und da das beschleunigende dann ja auch nicht weiter fliegen kann, bleibt es auch direkt stehen.

 

Ich möchte natürlich, dass sich alle Spaceships normal verhalten, als wenn die Spieler nicht authorisiert wären. Hat jemand eine Idee, wie ich das erreichen könnte? Da es sich um ein rundenbasiertes Spiel handelt und im Prinzip der Server auch die Bewegung einleiten könnte, wäre mir nur die Idee gekommen, dass ich vor der Bewegung immer den Objekten die Berechtigungen entziehe und sie ihnen nach der Bewegung dann wiedergebe.... Habt ihr bessere Ideen?

 

VG Borlox

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe auch ein ähnliches Problem gehabt. Ich habe dies so gelöst, dass immer wenn ein Spieler mit einem Object kolliediert, er die Authorität für das objekt kriegt. Somit kann jeder Spieler über das Objekt und seine Physik verfügen, wenn er mit diesem Objekt kollidiert, es anschiebt oder was auch immer. Klappt bei mir wunderbar. Allerdings ist es bei mir so, dass diese Objekte grundsätzlich neutrale Objekte sind und die Spieler diese Objekte nicht steuern sondern nur die Authorität kriegen um das Objekt physikalisch zu beeinflussen.

 

Ich hoffe ich habe dich richtig verstanden :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...