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.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage