2016-06-28 167 views
-1

我和我的朋友創建了一個2D射擊遊戲,現在我們正在實現多人遊戲功能,但是當玩家模型切換他的朝向方向時(玩家朝向朝向的鼠標指針)。當我們嘗試用一個服務器播放器和兩個客戶端的玩家來測試遊戲中有一個問題:從客戶端到客戶端的同步對象比例

  1. 服務器到客戶端工作正常
  2. 客戶端到服務器工作正常
  3. 客戶端到客戶端:玩家總是向右

    using UnityEngine.Networking; 
    
    [SyncVar(hook = "serverTurn")] 
    public bool turnState; 
    
    void Update() 
    { 
        if (!isLocalPlayer) 
        { 
         return; 
        } 
    
        ... 
    
        if (Input.mousePosition.x > (Screen.width/2)) 
        { 
         turnState = true; 
         gameObject.transform.localScale = new Vector3(1, 1, 1); 
    
         Cmd_ChangeDirection(turnState); 
         serverTurn(turnState); 
        } 
    
        else if (Input.mousePosition.x < (Screen.width/2)) 
        { 
         turnState = false; 
         gameObject.transform.localScale = new Vector3(-1, 1, 1); 
    
         Cmd_ChangeDirection(turnState); 
         serverTurn(turnState); 
        } 
    } 
    
    [Command] 
    void Cmd_ChangeDirection(bool var) 
    { 
        if (var) 
        { 
         body2d.transform.localScale = new Vector3(1, 1, 1); 
        } 
        else 
        { 
         body2d.transform.localScale = new Vector3(-1, 1, 1); 
        } 
    } 
    
    void serverTurn(bool state) 
    { 
        if (state) 
        { 
         body2d.transform.localScale = new Vector3(1, 1, 1);   
        } 
        else 
        { 
         body2d.transform.localScale = new Vector3(-1, 1, 1); 
        } 
    } 
    

我們做的是錯的,但我們不知道是什麼。我們也讓玩家所持的槍跟着光標,並且工作正常。旋轉同步沒有問題,但縮放不會,所以我們想知道如何同步客戶端到客戶端的對象比例。

+0

你在使用什麼樣的網絡引擎?你認爲這是無關緊要的嗎? –

+0

我們正在使用UnityEngine.Networking。 – MazzFraps

回答

0

那麼我們解決了這個問題。如果它對任何人都有用,我們需要使用RPC將客戶端修復爲客戶端同步。