Unity 5.1 Networking - порождает объект как дочерний для хоста и всех клиентов
У меня есть объект игрока, который может вооружить несколько видов оружия. Когда оружие экипировано, родитель его трансформации устанавливается на его руку. Я возился с этим в течение некоторого времени и не могу заставить это работать как для хоста, так и для клиента. Прямо сейчас я пытаюсь оснастить оружие на сервере и сказать всем клиентам, чтобы их родители настраивали преобразования.
public NetworkInstanceId weaponNetId;
[Command]
void Cmd_EquipWeapon()
{
var weaponObject = Instantiate (Resources.Load ("Gun"),
hand.position,
Quaternion.Euler (0f, 0f, 0f)) as GameObject;
weaponObject.transform.parent = hand;
NetworkServer.Spawn (weaponObject);
//set equipped weapon
var weapon = weaponObject.GetComponent<Weapon> () as Weapon;
weaponNetId = weaponObject.GetComponent<NetworkIdentity> ().netId;
Rpc_SetParentGameobject (weaponNetId);
}
[ClientRpc]
public void Rpc_SetParentGameobject(NetworkInstanceId netID)
{
weaponNetId = netId;
}
И в обновлении я обновляю трансформацию оружия
void Update () {
// set child weapon tranform on clients
if (!isServer) {
if (weaponNetId.Value != 0 && !armed) {
GameObject child = NetworkServer.FindLocalObject (weaponNetId);
if (child != null) {
child.transform.parent = hand;
}
}
}
Я знаю, что это не самый оптимизированный способ сделать это ... но сейчас я просто пытаюсь заставить это работать любым возможным способом, а затем работаю над его настройкой. Похоже, это должно быть простой задачей.