/ /クライアントからクライアントへのオブジェクトスケールの同期 - c#、networking、unity3d

オブジェクトスケールをクライアントからクライアントに同期する - c#、networking、unity3d

私の友人と私は2Dシューティングゲームを作成しました。我々はマルチプレイヤー機能を実装していますが、プレーヤーのモデルが向きを変えたとき(プレイヤーがマウスポインターの方向に向いている)には困難を抱えています。 1人のサーバープレーヤーと2人のクライアントプレーヤーでゲームをテストしようとすると問題が発生します。

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

私たちは何か間違っているが、私たちは知らない何。ローテーションは問題なく同期しますが、スケールはありません。したがって、オブジェクトスケールをクライアントからクライアントに同期させる方法を知りたいと思っています。

回答:

回答№1は0

私たちは問題を解決しました。誰にでも使用できるようになるには、RPCを使用してクライアントとクライアントの同期を固定する必要がありました。


関連する質問


コメント(0)

コメントを追加