У меня есть объект игрока, который может экипировать несколько видов оружия. Когда оружие оборудовано, его родительский трансформатор устанавливается в его руку. Я некоторое время общался с этим и не могу заставить это работать как для хоста, так и для клиента. Сейчас я пытаюсь вооружить оружие на сервере и сообщать всем клиентам, чтобы их родители трансформировались.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;
}
}
}
Я знаю, что это не самый оптимизированный способ сделать this..but прямо сейчас я просто пытаюсь получить это должно работать любым способом, а затем работать над его настройкой. Похоже, это должна быть простая задача.
Я пытаюсь использовать этот метод. есть ли причина, по которой «netId» изменится? Я устанавливаю его, как в приведенном примере, в 'OnStartClient'. –
Не могу поверить, что это способ сделать это .. черт! –
Почему вы вернули мое редактирование? Я добавил выделение кода, делая ваш код намного лучше, чтобы читать. – derHugo