Game Object игрока

Mirror обрабатывает игровые объекты игроков иначе, чем игровые объекты неигровых пользователей. Когда новый игрок присоединяется к игре (когда новый клиент подключается к серверу), игровой объект этого игрока становится игровым объектом “локальный игрок” на клиенте этого игрока, и Unity связывает соединение игрока с игровым объектом игрока. Unity связывает один игровой объект player с каждым человеком, играющим в игру, и направляет сетевые команды к этому отдельному игровому объекту. Игрок не может вызвать Command для игрового объекта другого игрока, только для своего собственного.

Класс NetworkBehaviour (на основе которого вы создаете свои сетевые скрипты) имеет свойство называемое isLocalPlayer. Для игрового объекта player каждого клиента Mirror устанавливает этому свойству значение true в сценарии NetworkBehaviour и вызывает вызов OnStartLocalPlayer(). Это означает, что у каждого клиента есть свой игровой объект, настроенный подобным образом, потому что на каждом клиенте другой игровой объект представляет локального игрока.

Только игровой объект игрока, который является “вашим” (с вашей точки зрения как игрока), имеет поставленный флаг isLocalPlayer. Обычно вы должны проверять этот флаг в скрипте, чтобы определить, следует ли обрабатывать ввод, заставлять камеру отслеживать игровой объект или выполнять любые другие действия на стороне клиента, которые должны выполняться только для игрока, принадлежащего этому клиенту.

Игровые объекты Player представляют игрока (то есть человека, играющего в игру) на сервере и имеют возможность выполнять команды от клиента игрока. Эти Command представляют собой защищенные удаленные вызовы процедур от клиента к серверу. В этой системе, управляемой сервером, другие игровые объекты на стороне сервера, не являющиеся игроками, не могут получать Command непосредственно от игровых объектов на стороне клиента. Это делается как для обеспечения безопасности, так и для снижения сложности создания вашей игры. Направляя все входящие Command от пользователей через игровой объект player, вы можете гарантировать, что эти сообщения поступают из нужного места, от нужного клиента и могут обрабатываться централизованно.

Network Manager добавляет игрока каждый раз, когда клиент подключается к серверу. Однако в некоторых ситуациях вы можете не захотеть добавлять игроков до тех пор, пока не произойдет событие ввода - например, пользователь не нажмет кнопку “Пуск” на контроллере. Чтобы отключить автоматическое создание объекта игрока, перейдите к компоненту Network Manager в инспекторе и уберите чекбокс Auto Create Player.

Last updated