erotec Geschrieben 13. September 2014 Melden Share Geschrieben 13. September 2014 Ja naja so das wenn ich die Waffe habe und sie auch sehe in meiner Hand das der andere sie auch in meiner Hand sieht bis jetzt sehe ich sie nur von meiner Seite aus aber der andere nicht und andersrum genauso das wenn er etwas in der Hand hat das ich nicht nur die Animation sehe sondern das zu der Animation er auch die Axt in der Hand hat und bis jetzt funktionieren wie gesagt die Animationen aber das GameObject in diesem fall die Axt sehe nur ich in meiner Hand der andere sieht nur das meine Hand oben ist ))) ich weiß bin ein schwerer Fall lach Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MarcoMeter Geschrieben 13. September 2014 Autor Melden Share Geschrieben 13. September 2014 Wie gesagt, nur derjenige im Netzwerk, der ein GameObject instanziiert, hat dieses lokal exklusiv in seiner Hierarchie. Die anderen nicht, weil die nicht Instantiate ausführen. Also musst du dies bei allen im Netzwerk ausführen lassen. Per RPC Call oder Network.Instantiate. Daraus folgt, dass du die Referenz auf deine neue Waffe nicht so indiskret erhalten kannst. jetztWaffe = Network.Instantiate() geht nicht, weil diese Funktion kein GameObject zurückgibt. Da du nur mit Network.Instantiate() das ganze durchführen kannst, musst du dir einen Weg ausdenken, wie du dir die Referenz auf das neue Objekt in deine jetztWaffe holst. Eine gute Idee hätte ich aber spontan: Dein Spielerobjekt hat schon alle Waffen instanziiert (sprich einfach in der Hierachie/Prefab angehangen). Jede dieser Waffen, welche GameObjects sind, deaktivierst du, bis auf die aktive. Dann kannst du dir jetzt schon alle Referenzen z.B. in einem Array von GameObjects speichern. Anstelle des Instantiate() Befehls nutzt du dann die Referenz des gameObjects und rufst .isActive(true); bei dem gameObject, welches genutzt werden soll auf. Das andere wird auf .setActive(false); gesetzt. Das ganze muss natürlich in einen RPC Call rein. zB [RPC] void WaffenWechsel(gameObject alteWaffe, gameObject neueWaffe) { alteWaffe.setActive(false); neueWaffe.setActive(true); } der Aufruf ergibt sich dann wie folgt: networkView.RPC("WaffenWechsel", RPCMode.AllBuffered, axt, schwert); Mit dieser Möglichkeit bist du nich auf Instantiate() angewiesen, weil jeder Spieler schon jede Waffe hat - es ist aber nu eine aktiviert. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
erotec Geschrieben 13. September 2014 Melden Share Geschrieben 13. September 2014 das würde aber bedeuten ich muss das ganze Script umschreiben oder? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MarcoMeter Geschrieben 13. September 2014 Autor Melden Share Geschrieben 13. September 2014 ich habs mir nicht angeguckt, vermutlich aber nicht viel du brauchst halt alle Waffen shcon auf deinem Spieler. In deinem Script machst du dann ein GameObject[] Array oder für jede Waffe eine GameObject Variable, machst die public und dann kannst du dir die Referenz in den Inspector reinziehen. Anstatt Instantiate() machst du dann einfach den oben geschriebenen RPC Call. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
erotec Geschrieben 13. September 2014 Melden Share Geschrieben 13. September 2014 schaue es dir bitte bitte mal an und verändere es wie du meinst dann kann ich es mir selber ausprobieren ich weiß verlange viel )))) Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MarcoMeter Geschrieben 13. September 2014 Autor Melden Share Geschrieben 13. September 2014 Das überlasse ich dir. Mehr vorkauen mag ich nicht. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
erotec Geschrieben 13. September 2014 Melden Share Geschrieben 13. September 2014 kannst du ruhig Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MarcoMeter Geschrieben 13. September 2014 Autor Melden Share Geschrieben 13. September 2014 Ich konzentriere mich jetzt auf die Bundesliga Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
erotec Geschrieben 13. September 2014 Melden Share Geschrieben 13. September 2014 Habe es mal so probiert void OnNetworkInstantiate(NetworkMessageInfo info) { if (networkView.isMine){ // kommt von der Animation "keineWaffe" if (networkView.isMine) { if (jetztWaffe != null) { // hatte ich schon eine Waffe, dann zerstöre sie Destroy (jetztWaffe); } if (axt) { // ich habe zur Axt gewechselt jetztWaffe = Network.Instantiate(AxtObj, axtPlatz.position, axtPlatz.rotation, 1) as GameObject; //instanziere die Waffe am rechten Platz und übergib sie auch der Variable jetztWaffe.transform.parent = axtPlatz; // mache die Waffe zum Chlid des messerPlatzes } if (messer) { // ich habe zum MesserObj gewechselt jetztWaffe = Instantiate (MesserObj, messerPlatz.position, messerPlatz.rotation) as GameObject; jetztWaffe.transform.parent = messerPlatz; } if (flinte) { // ich habe zur Flinte gewechselt jetztWaffe = Instantiate (FlinteObj, flintePlatz.position, flintePlatz.rotation) as GameObject; jetztWaffe.transform.parent = flintePlatz; } if (pistole) { // ich habe zur Flinte gewechselt jetztWaffe = Instantiate (PistoleObj, pistolePlatz.position, pistolePlatz.rotation) as GameObject; jetztWaffe.transform.parent = pistolePlatz; } //wechsel ist fertig anim.SetBool ("wechsel", false); } } } aber dann spawnt er sie nur also bei jeder Bewegung eine aber hmmmmm Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
erotec Geschrieben 13. September 2014 Melden Share Geschrieben 13. September 2014 aso na dann viel spaß dir dabei und danke ;((( Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MarcoMeter Geschrieben 13. September 2014 Autor Melden Share Geschrieben 13. September 2014 Ich habe oben erklärt, wie du Network.Instantiate nicht nutzen musst. Zusätzlich habe ich dir erläutert, dass variable = Network.Instantiate() nicht geht, weil diese Methode keinen Rückgabewert hat. Also lies dir nochmal alles durch, mehr kann ich auch nicht tun, wenn du meine Beiträge nicht richtig liest. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
erotec Geschrieben 13. September 2014 Melden Share Geschrieben 13. September 2014 ja doch bin dir auch dankbar nur das eine geht nicht wie du sagst und das andere da muss der Code umgeschrieben werden habe da gerade eine Unwissenheit wie ich das bewerkstelligen soll RPC CALL ok wie was und wo muss ich es ändern und was muss dazu geschrieben werden du willst das ich die GameObjecte wie z.b. Axt;Flinte,Messer,Pistole ...Public im Script mache und in der Hierarchie deaktiviere ich alle außer die ich habe ok das habe ich verstanden und im Script soll ich dann was weiter machen ? mein Problem ist wie soll ich das mit dem schon vorhandenen Code umsetzten die RPC? )) Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.