2017-08-13 104 views
0

我正在製作地震式遊戲,並且目前正在實施多人遊戲。如果gameObject =(「玩家(克隆)」)進入觸發器,則會出現跳躍板。在unet(Unity多人遊戲)中,當你啓動並加入它時,會將你的GameObject創建爲「玩家(克隆)」。無法在Unity中找到克隆玩家(Unet)的實例

現在的問題是,當第二個玩家加入並在跳板上跳轉(進入觸發器)時,什麼都不會發生。但主持人(玩家1)可以。以下是跳轉板識別遊戲對象的代碼。我一直在抨擊我的大腦,試圖使用諸如「Find.FindGameObjectsWithTag」之類的不同方法。

代碼:

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class JumpPad : MonoBehaviour { 

QuakeJump fpsinput; 
public float power; 

private void OnTriggerEnter(Collider mycollision) 
{ 
    { 
     fpsinput = 
GameObject.Find("Player(Clone)").GetComponent<QuakeJump>(); 
     if (mycollision.gameObject.tag == "Player") 
     { 
      fpsinput.playerVelocity = transform.up * power; 
     } 
    } 
} 

} 

編輯:我還注意到,當玩家2次墊跳躍,沒有發生在他身上,但播放器1(主機)被髮射到空中,甚至沒有踩着墊。

回答

0

下面是我的一些調查結果:

  1. GameObject.Find("Player(Clone)")只會得到一個遊戲對象。所以,如果有兩名球員,你只能得到一名球員,而且可能是第一名球員。
  2. 如果您正在使用NetworkTransform和球員的NetworkIdentity沒有被設置爲本土球員管理局,這是行不通的,因爲服務器將控制改造。
  3. 您還需要確定剛體是否通過網絡同步。

不過,我會建議使用命令RPCClient同步所有網絡上的球員。例如,當玩家進入觸發器時,向所有客戶端發送RPC,以便他們也更新玩家在其實例中的變換。 請看這裏深入的網絡教程:https://unity3d.com/learn/tutorials/topics/multiplayer-networking

+0

我很肯定在這一點上它的編號1),我剛剛開始聯網,所以我不確定什麼RPCClient和所有。但是你會用什麼樣的方法(除了rpc)來解決數字1)? –

+0

您需要從已經進入觸發器的玩家處獲得quakeJump組件。所以,你可以使用這樣的代碼:https://pastebin.com/baU5qyfb 但是,如果你不確定第二點,它將不起作用。 - – ZayedUpal

+0

我的網絡身份設置爲本地播放器權限,當我寫下你粘貼在我的代碼中的內容時,它沒有任何影響,它仍然處於當前狀態,如果主持人跳轉到可以啓動的鍵盤上,並且如果有其他播放器跳上去,玩家不會啓動,但主持人即使不在墊上也會啓動。 –