В настоящее время я делаю тестовую программу, которая перемещает игрока вверх после нажатия кнопки.
Я использую команды и RPC для этого.Когда я нажимаю кнопку на хосте, плеер хоста перемещается вверх, но не тогда, когда я нажимаю кнопку на клиенте.Я не могу понять, почему.Я получаю сообщение об ошибке, говорящее, что я
пытаюсь отправить команду для объекта без прав доступа.
Но игрок уже должен иметь право авторитета ?!У префаба игрока есть сетевая идентификация с проверенными полномочиями локального игрока.
Что странно, так это то, что мой код, который меняет имена каждого игрока, когда они появляются, работает отлично, но не код, который меняет позицию для клиента, по крайней мере.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class TestPlayerController : NetworkBehaviour
{
void Start()
{
if (!isServer)
{
CmdChangeName("Player 2");
}
else if (isServer)
{
CmdChangeName("Player 1");
}
}
void Update()
{
if (TestCubeScript.button1Press == true)
{
if (!isServer)
{
CmdMoveCube(new Vector2(transform.position.x, transform.position.y + 1));
TestCubeScript.button1Press = false;
}
else
{
RpcUpdateCube(new Vector2(transform.position.x, transform.position.y + 1));
TestCubeScript.button1Press = false;
}
}
}
[Command]
void CmdMoveCube(Vector2 pos)
{
RpcUpdateCube(pos);
}
[ClientRpc]
void RpcUpdateCube(Vector2 pos)
{
transform.position = pos;
}
[Command]
void CmdChangeName(string name)
{
RpcUpdateName(name);
}
[ClientRpc]
void RpcUpdateName(string name)
{
transform.name = name;
}
}