igor_ch писал(а):Привет всем, подскажите кто разобрался с UNET
Есть персонаж CharacterController - тот самый player.
Есть самолет AirplanceController, изначально на сцене или созданный с помощью NetworkServer.Spawn()
Его каждый игрок должен уметь брать покататься.
Так вот как правильно это делать ?
я делаю так
...
команда даже не вызывается, так как ее можно вызывать только с хоста.
как быть ?
Привет. Прошло уже два года, но вдруг мой ответ будет полезным.
Первое. В CharacterController обязательно поставь условие if(!isLocalPlayer) return. В противном случае код будет срабатывать на всех игроках, а не только на твоем.
Второе. Чтобы брать самолет покататься, ты должен назначать на него ClientAuthority. Но самолет сам себе не может назначить авторити, т.к. он не может отправлять команды (команду может отправить либо Player, либо объект, на котором уже есть ClientAuthority). Единственный способ обойти это -- сделать скрипт с командой на игроке, а с самолета обращаться к игроку: Player.CmdSetAuthority(this.networkIdentity). Если другой игрок (другой клиент) пытается взять самолет, то снять с предыдущего владельца авторити, и назначить на нового. Надеюсь, понятно объяснил.