UNet ClienRp c похоже, не работает на других клиентах, кроме тех, кто его вызвал - PullRequest
0 голосов
/ 02 августа 2020

Я тестирую простые UNet функции, но не могу заставить ClientRpc работать.

Я пробовал

  1. объект игрока используйте метод Command для перемещения игрового объекта.

  2. Объект перемещается методом ClientRpc, чтобы сообщить другому клиенту, что вы также должны переместить свой объект.

Проблема в том, что объект перемещается только в клиенте, который вызвал метод Command, а не в другом клиенте.

Я не могу понять, почему ClientRpc не вызывается в другой клиент.

Код ниже: объект игрока

public class NetTestPlayer : NetworkBehaviour
{
    private NetTestPosition _position;
    
    private void Start()
    {
        _position = FindObjectOfType<NetTestPosition>();
        if (_position == null)
        {
            throw new NullReferenceException();
        }
    }

    private void FixedUpdate()
    {
        if (isLocalPlayer)
        {
            if (Input.GetButtonDown("Jump"))
            {
                CmdChangePosition();
            }
        }
    }

    [Command]
    private void CmdChangePosition()
    {
        _position.RpcChangePosition();
    }
}

А вот объект, который нужно переместить

public class NetTestPosition : NetworkBehaviour
{
    [ClientRpc]
    public void RpcChangePosition()
    {
            transform.Translate(Vector3.right);
    }
}

Я знаю NetworkTransform может перемещать объект в обоих игроках,

, но я думаю, что приведенные выше коды тоже должны работать.

Спасибо, что прочитали мой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...