Ich habe ein Spielerobjekt, das mehrere Waffen ausrüsten kann. Wenn eine Waffe ausgerüstet ist, wird der Elternteil der Verwandlung auf seine Hand gesetzt. Ich habe mich schon seit geraumer Zeit damit beschäftigt und kann das sowohl für den Gastgeber als auch für den Kunden nicht schaffen. Gerade jetzt versuche ich die Waffe auf dem Server auszustatten und sage allen Clients, dass sie ihre Eltern transformieren sollen.Unity 5.1 Networking - Spawn ein Objekt als Kind für den Host und alle Clients
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 in dem Update Ich bin Aktualisierung der Waffen
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;
}
}
}
verwandeln Ich weiß, das ist nicht die Art und Weise optimiert jetzt zu tun this..but ich nur versucht, mich zu bekommen das funktioniert so gut wie möglich und dann daran arbeiten, es zu optimieren. Es scheint, als sollte es eine einfache Aufgabe sein.
Ich versuche, diese Methode zu verwenden. Gibt es einen Grund, warum sich die "NetId" ändern würde? Ich setze es nur wie im Beispiel in 'OnStartClient'. –
Kann nicht glauben, dass dies der Weg ist, dies zu tun .. verdammt! –
Warum hast du meine Bearbeitung rückgängig gemacht? Ich habe die Code-Hervorhebung hinzugefügt, um Ihren Code viel besser zu lesen. – derHugo