Я делаю многопользовательскую игру, и я пытаюсь создать экземпляр нового объекта на клиенте. Объект должен контролироваться одним игроком.Владение клиентом Unity UNet
Я пробовал просто инстанцировании его на клиенте, а затем порождая его:
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
, а затем он был создан везде, но клиент не может его контролировать. Однако сервер может управлять им.
Каков правильный способ сделать это? Создание объекта, который должен контролироваться одним из игроков, а не сервером?
Я попытался найти его, но ничего не смог найти.
Спасибо!