2016-12-31 2 views
2

Unets Dokumentation fehlt, wie wir alle wissen.Unity3d unet - TargetRPC-Aufruf vom Client

Ich würde gerne beantwortet bekommen, und hoffentlich kann es anderen später bei der Suche helfen. Hier

ist, was ich versuche zu tun:

  1. Detect traf mit Raycast auf Spieler-Client.
  2. Geben Sie die Treffer auf dem dedizierten Server ein [Befehl]
  3. Benachrichtigen den einen Client, der getroffen wurde unter Verwendung von [TargetRPC]

Das Problem ist, mit, dass der TargetRPC einen Network Wert erfordert, aber der einzige dokumentiert Weg ist mit ConnectToClient von diesem Objekt - die ich nicht habe und ich muss bekommen.

Wie identifiziere ich den Player, den ich auf dem Client getroffen habe, auf eine Weise, die sich in einen korrekten NetworkConnection-Wert übersetzen lässt.

Auf dem lokalen Spieler Behörde Objekt:

CmdIHitSomeone(unknown); 

[Command] 
void CmdIHitSomeone(NetworkConnect unknown) { 
    TargetLetYourVictimFeelIt(unknown); 
} 

[TargetRPC] 
void TargetLetYourVictimFeelIt(NetworkConnection unknown){ 
    //do something bad here 
} 

Antwort

1
NetworkConnection connnection = NetworkServer.objects[netId].connectionToClient; 
+1

Könnten Sie bitte Ihre Antwort erweitern? –

0
[Command] 
void CmdIHitSomeone(int amountToHit, NetworkIdentity target) 
{ 
    TargetLetYourVictimFeelIt(target.connectionToClient , amountToHit);  
} 
[TargetRPC] 
void TargetLetYourVictimFeelIt(NetworkConnection target, int amount) 
{ 
    //do something bad here 
} 
// call your command by getting NetworkIdentitiy component of your target/enemy 
GameObject target; 
CmdIHitSomeone(10, target.GetComponent<NetworkIdentity>()); 
Verwandte Themen