Unity 5.1 Networking: genera un objeto como elemento secundario para el host y todos los clientes
Tengo un objeto jugador que puede equipar varias armas. Cuando un arma está equipada, el padre de su transformación se pone en su mano. He estado jugando con esto durante algún tiempo y no puedo hacer que funcione tanto para el host como para el cliente. En este momento estoy tratando de equipar el arma en el servidor y decirle a todos los clientes que configuren las transformaciones de sus padres.
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;
}
Y en la actualización estoy actualizando la transformación de armas
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;
}
}
}
Sé que esta no es la forma más optimizada de hacer esto ... pero en este momento solo estoy tratando de hacer que esto funcione de cualquier manera posible y luego trabajar en ajustarlo. Parece que debería ser una tarea simple.