xxxlio | Дата: Среда, 23 Мая 2018, 14:36 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| В общем так, делаю мультиплеер пока что через стандартный скрипт юнити Network. На пустой объект на сцене добавил компоненты Network Manager И менюшку Network Manager HUD. Игрока сделал прифабом и добавил компоненты Network Identity(local player) и Network Transform. Ну еще есть скрипт который отключает управление персонажем и камеру у не локального игрока. С этим проблем нет, каждый движется в своем направлении и каждый видит второго игрока.
Теперь, собственно вопрос. Если коротко то нужно одним игроком добавлять на сцену общий предмет. К примеру этот скрипт я закинул на игрока и при нажатии на "M" Должен появляться предмет из префаба на сцене и его должны видеть все игроки.
using UnityEngine; using System.Collections; using UnityEngine.Networking; public class TestKub : NetworkBehaviour { public GameObject Kub; void SpawnObject(GameObject Kub) { GameObject go = GameObject.Instantiate(Kub); // серверную копию NetworkServer.Spawn(go); // отправить сообщение спаун для клиентов } void Update () { if (Input.GetKeyDown(KeyCode.M)) { ClientScene.RegisterPrefab(Kub); GameObject go = (GameObject)Instantiate(Kub, new Vector3 (500, 60, 500), Quaternion.identity); NetworkServer.Spawn (go); } } }
Получается следующее. Если М нажимает игрок который создаёт сервер, то все работает. А если это клиент (который подключился к серверу) то объект создается, но он виден только тому кто его создал. Как решить эту проблему. Может есть скрипт как передать команду серверу, а с него осуществить создание? Прбовал давать права клиенту вот так: Player.GetComponent<NetworkIdentity>().AssignClientAuthority(this.GetComponent<NetworkIdentity>().connectionToClient); Но все ровно ничего не выходит...
|
|
| |