Посмотрел видеоуроки Networking, маленько понял суть. Делаю мультиплеер для своего танковского проекта. Танк при спауне собирается из башни и корпуса. При этом башня удочеряется корпусу. Когда один игрок спаунит танк, у другого башня не удочеряется корпусу. Спаун происходит в RPC функции через так:
У того игрока, который спаунит танк, всё хорошо. У другого игрока башня не удочеряется, и поэтому моргает (то (0, 1.2, -0.4) по локальной, то то же по глобальной) Скрипт синхронизации такой:
Код
var LastPosition : Vector3; var LastRotation : Quaternion;
function Start (){ if (!networkView.isMine){ this.enabled = false; } }
Может в этом скрипте как-то можно написать, чтобы он синхронизировал своего родителя с остальными игроками?
пи-си: может написал я коряво, но надеюсь, понятно.
Добавлено (17 Дек 2015, 18:10) --------------------------------------------- Маленько перефразирую: Имея два объекта с networkView, инстанциированых клиентом, можно ли на сервере удочерить один другому?
Добавлено (18 Дек 2015, 14:58) --------------------------------------------- Ну же, ребят, нужна помощь! Вот еще доп. инфа, функция спауна танка:
Код
function Spawn () { var b : Transform; b = Network.Instantiate (Body, SpawnPoints[RN].transform.position, SpawnPoints[RN].transform.rotation, 0); ReSpawnTimer = ReSpawnDaley; var t : Transform; var Tr = b.GetComponent("Tracks"); t = Network.Instantiate (Turret, SpawnPoints[RN].transform.position + SpawnPoints[RN].transform.TransformDirection(Tr.TurretPosition) , SpawnPoints[RN].transform.rotation, 0); gameObject.GetComponentInChildren( SmoothFollow ).target = t.transform; gameObject.GetComponentInChildren( SmoothFollow ).Team = b.GetComponent("Health"); t.parent = b; b.GetComponent("Health").Team = Team; for (var DHit : Damage in t.GetComponentsInChildren(Damage)) DHit.GetComponentInChildren(Damage).MyHealth = b.GetComponent("Health"); b.GetComponent("Health").Turret = t.transform;
b.GetComponent("Health").PlayerTurret = t.GetComponent("PlayerTurret"); b.GetComponent("Health").DeadTurret = t.GetComponent("PlayerTurret").Dead; Tank = b; }
Как мне найти и башню, и корпус на всех клиентах и сервере, а затем удочерить их друг другу? Пытался таким способом, но выдает ошибку, говорит, что Network.Instantiate должен опираться на префаб:
Код
function Spawn () { var b : Transform; b = Instantiate (Body, SpawnPoints[RN].transform.position, SpawnPoints[RN].transform.rotation); var t : Transform; t = Instantiate (Turret, SpawnPoints[RN].transform.position + SpawnPoints[RN].transform.TransformDirection(Tr.TurretPosition) , t.parent = b; Tank = Network.Instantiate (b.gameObject, SpawnPoints[RN].transform.position, SpawnPoints[RN].transform.rotation, 0); }
Сообщение отредактировал VolkOrievith - Пт, 18 Дек 2015, 14:58