Rede Unity 5.1 - Gera um objeto como filho para o host e todos os clientes
Eu tenho um objeto jogador que pode equipar várias armas. Quando uma arma é equipada, o pai da sua transformação é definido na sua mão. Eu brinquei com isso por algum tempo e não consigo fazer isso funcionar tanto para o host quanto para o cliente. No momento, estou tentando equipar a arma no servidor e dizer a todos os clientes para definirem as transformações dos pais.
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;
}
E na atualização eu estou atualizando a transformação 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;
}
}
}
Eu sei que essa não é a maneira mais otimizada de fazer isso ... mas, no momento, estou apenas tentando fazer com que isso funcione da maneira mais possível e, em seguida, aprimorando. Parece que deve ser uma tarefa simples.