Я делаю многопользовательскую игру и пытаюсь создать новый объект на клиенте. Объект должен контролироваться только этим игроком.
Я попробовал это, просто создав экземпляр на клиенте, а затем создав его:
public class Player : NetworkBehaviour
{
[SerializeField]
private Card _testCard;
void Update()
{
if (!isLocalPlayer) return;
if (Input.GetKeyDown(KeyCode.Space))
{
RaycastHit hit;
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit))
{
var card = Instantiate(_testCard);
card.transform.position = hit.point;
card.Name = "Test";
NetworkServer.Spawn(card.gameObject);
//or call this from a command, shown below
}
}
}
/*[Command]
void CmdPlayTestCard(string name, Vector3 position)
{
var card = Instantiate(_testCard);
card.transform.position = position;
card.Name = name;
NetworkServer.Spawn(card.gameObject);
}*/
}
Это порождает объект на клиенте, и он может им управлять, но не порождает на сервере.
Я также сделал то же самое в Command
, и затем он создается везде, но клиент не может его контролировать. Однако сервер может контролировать это.
Каков правильный способ сделать это? Создавать объект, которым должен управлять один из игроков, а не сервер?
Я пробовал гуглить, но ничего не нашел.
Спасибо!