Unity 5.1 Networking - Erzeugt ein Objekt als untergeordnetes Element für den Host und alle Clients.
Ich habe ein Spielerobjekt, das mehrere Waffen ausrüsten kann. Wenn eine Waffe ausgerüstet ist, wird das übergeordnete Element der Transformation auf ihre Hand gesetzt. Ich habe einige Zeit damit rumgespielt und kann nicht dafür sorgen, dass dies sowohl für den Host als auch für den Client funktioniert. Im Moment versuche ich, die Waffe auf dem Server auszurüsten und allen Clients zu sagen, dass sie ihre Eltern transformieren sollen.
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;
}
Und im Update aktualisiere ich die Waffentransformation
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;
}
}
}
Ich weiß, dass dies nicht der optimalste Weg ist, dies zu tun. Aber im Moment versuche ich nur, dass dies auf jede mögliche Weise funktioniert und arbeite dann daran, es zu optimieren. Scheint, als sollte es eine einfache Aufgabe sein.