2016-12-31 3 views
2

La documentation d'Unet fait défaut, comme nous le savons tous.Unity3d unet - Appel TargetRPC provenant du client

J'aimerais obtenir cette réponse, et j'espère que cela peut aider les autres à chercher plus tard.

Voici ce que je suis en train de faire:

  1. Detect succès auprès raycast sur le client de joueur.
  2. Indiquez le succès sur le serveur dédié à l'aide d'un [Commande]
  3. Avertissez l'un client qui a été touché à l'aide [TargetRPC]

Le problème est que la TargetRPC exige une valeur NetworkConnection, mais le seul documenté C'est en utilisant ConnectToClient à partir de cet objet - ce que je n'ai pas et je dois obtenir.

Comment identifier le lecteur que j'ai frappé du côté client sur le serveur d'une manière qui peut se traduire par une valeur NetworkConnection correcte.

Sur l'objet de l'autorité de joueur local:

CmdIHitSomeone(unknown); 

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

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

Répondre

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

Pourriez-vous s'il vous plaît élargir votre réponse? –

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>());