Я тестирую простые UNet функции, но не могу заставить ClientRpc
работать.
Я пробовал
объект игрока используйте метод Command
для перемещения игрового объекта.
Объект перемещается методом 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
может перемещать объект в обоих игроках,
, но я думаю, что приведенные выше коды тоже должны работать.
Спасибо, что прочитали мой вопрос.