2016-12-31 107 views
2

我們都知道Unet的文檔是缺乏的。Unity3d unet - 源自客戶端的TargetRPC呼叫

我很想得到這個答案,並希望它可以幫助其他人以後搜索。

這裏是我想要做的事:

  1. 檢測與播放器客戶端上的光線投射命中。
  2. 指示使用[命令]命中到專用服務器
  3. 通知的一個客戶端,使用[TargetRPC]打

的問題是,TargetRPC需要NetworkConnection價值,但只有記錄方法是通過使用ConnectToClient從該對象 - 我沒有,我需要得到。

如何識別我在客戶端打到服務器的播放器,並將其轉換爲適當的NetworkConnection值。

在本地選手機構對象:

CmdIHitSomeone(unknown); 

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

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

回答

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

能不能請你擴大你的答案嗎? –

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