UnityProband Geschrieben 17. Januar 2017 Melden Share Geschrieben 17. Januar 2017 Hallo liebe Unity - Freunde! Ich brauche einen Rat bezueglich einer Projektumsetzung unter Unity. Ich versuche mal die grobe Funktionalitaet der Applikatione zu beschreiben. Es soll ein 3D Projekt werden bei der eine virtuelle Umgebung mit 5 virtuellen plazierten Objekte aufgebaut werden. Die Objekte besizen unterschiedliche Animationen, die ich mit dem Unity-Animationseditor umgesetzt habe. Die Idee ist es, dass ich fuer jedes Objekt einen Animator baue, der eine bestimmte Animation umsetzt. Folgendes soll die Applikation lesiten. Wenn ich z.B. auf die Leertaste druecke, dann sollen zufallig zwei Objekte ausgewahlt werde, die sich animeirend auf die virtuelle Kamera zubewegen. Anschliessend sollen jeweil zwei Sounddateien hintereinander abgespielt werden. Wenn diese Soundquellen abgespielt wurden, dann sollen sich die jeweiligen Objekte wieder zurueck bewegen. Ich habe es schon geschafft einzelne Animatoren zu erzeugen, die die einzelnen Animationen beeinhalten. Per Skript erzeuge ich zwei zufaellige Zahlen zwischen1 und 5 fuer die Auswahl der Objekte. Die einzelnen Animatoren haben eine int Variable defineiret, die ich Abfrage, um einzelne Objektanimationen zu starten. Leider funtktioniert das nicht immer, weil ich per Update und Keyboard-Trigger immer gleichzeitig mehrere Werte setze. Waere eine Umsetzung mit Hilfe eiens Triggers eine bessere Alternative Wie wuerdet Ihr das realisiren? Ich druecke z.B. die Leertaste und generiere dabei zwei Zufallszahlen, die anschliessend zwei Objekte zum animieren anregen. Anschliesend sollen diese solange warten bis zwei Sounds abgespielt wurden. Diese Sounds sollen dabei hintereinander abgespielt werden. Dann sollen sich die Objekte wieder zurueck bewegen! Hat Jemand eine Idee? Ueber Vorschlaege waere ich dankbar! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Hrungdak Geschrieben 18. Januar 2017 Melden Share Geschrieben 18. Januar 2017 Willkommen im Forum. So wie du das beschreibst, hört es sich nicht schlecht an. Ich bin mir auch nicht sicher, welche Probleme du hast. Leider funtktioniert das nicht immer, weil ich per Update und Keyboard-Trigger immer gleichzeitig mehrere Werte setze. Der Satz deutet auf Probleme hin. Hast du ein Stück Code dazu, das wir uns mal anschauen können? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
UnityProband Geschrieben 18. Januar 2017 Autor Melden Share Geschrieben 18. Januar 2017 Hallo! Die Sache ist so, wenn ich jetzt mit C# eine Taste abfrage mit einer if-Klausel , dann setze ichentsprechen eine definierte Variabel, die bei allen Animatoren vorhanden ist. Den Vorgang führe ich aber in einer Update Methode durch! Ab und an wird die Variable aber nicht nur einmal gesetzt, sondern er setzt die emntsprechenden Variablen mehrmals mit Werten. also, z.B. 1 und mit 2, und das willl ich natürlich vermeiden! VG Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Hrungdak Geschrieben 18. Januar 2017 Melden Share Geschrieben 18. Januar 2017 Willkommen im Forum. So wie du das beschreibst, hört es sich nicht schlecht an. Ich bin mir auch nicht sicher, welche Probleme du hast. Der Satz deutet auf Probleme hin. Hast du ein Stück Code dazu, das wir uns mal anschauen können? Einfach den relevanten Code hier rein posten. Benutze dazu -Tags (ohne die Leerzeichen in den Klammern), dann wird es auch schön formatiert. Und keine Sorge, wir haben fast alles schon mal gesehen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
UnityProband Geschrieben 18. Januar 2017 Autor Melden Share Geschrieben 18. Januar 2017 Hallo! Animator animator;int randomnumber;void Start () { animator = GetComponent<Animator>(); randomnumber = Random.Range(1,5);}void Update(){ if(Input.GetKeyDown(KeyCode.Space)) { Debug.Log(randomnumber); animator.SetInteger("Number",randomnumber);}}[/Code] Was ich nicht verstehe ist, dass er mir nach einander per Debug unterschiedliche Zahlen ausgibt! Ich habe mit gleichen Zahlen gerechnet! Hast Du eine Idee? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
UnityProband Geschrieben 18. Januar 2017 Autor Melden Share Geschrieben 18. Januar 2017 Hallo! Ok, hatte selber die Erleuchtung! Der Code ist ja auf allen 5 Objekten! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
UnityProband Geschrieben 18. Januar 2017 Autor Melden Share Geschrieben 18. Januar 2017 Hallo! Habe die Generierung der Zufallszahl auf eine statischen Klasse verlagert! Funktioniert jetzt gut! Tipps werden trotzdem noch dankbar angenommen! Abspielen der zwei Sounds bezueglich eines Animators! VG Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 18. Januar 2017 Melden Share Geschrieben 18. Januar 2017 Ne statische Klasse kann man machen, muss man aber nicht. Zu den Sounds: Irgendwo startest die ja die Sounds. Dort könntest du z.B. je eine boolsche Variable auf true setzen, wenn ein Sound gestartet wird. Die beide Vars fragts du ab und wenn sie true sind, übergibst du die Info an deinen Figürchen damit sie sich wieder zurück bewegen. Du kannst auch die Sounds mit einer int Variable zählen und bei 2 das Startsignal geben. Und du kannst auch beim 2ten Sound einfach fragen ob er zuendegespielt hat (audio.isPlaying) oder noch dran ist. Ist er fertig dann geht's los. Eigentlich alles recht leicht und über viele Wege zu bewerkstelligen. Die Frage ist aber, woran hängst du? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
UnityProband Geschrieben 18. Januar 2017 Autor Melden Share Geschrieben 18. Januar 2017 Hallo, zur Zeit habe ich folgendes Problem: Ich setze im Animator zwei int Variablen. Kann ich von einem Zustand durch mehrere Transition in einen anderen Zustand wechseln? Bei mir funktioniert das nicht richtig! Z.B. Die erste variable a = 1, jetzt gehe ich den rechten Baumzweig ab, was auch gut funktioniert! Wenn ich aber von einem Zustand mit mehreren Transition wechseln will, dann geht er den Baum nicht weiter! Was mache ich flasch! ich habe das gesetzt, bei den Transition, a Equals 1 z.B. dann Zustand T, a Equals 3 dann Zustand V, usw. Muss ich da was beachten? VG Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
UnityProband Geschrieben 18. Januar 2017 Autor Melden Share Geschrieben 18. Januar 2017 Hallo! Vielleicht habe ich mich jetzt nicht so genau ausgedrueckt! Kann ich von einem Zustand mehrere Zustandübergaene bilden, die jeweils zu einem anderen Zustand hinfuehren, oder ist nur jeweils ein Uebergang moeglich, der zu einen naechsten zustand fuehrt? Ein Beispiel: Ich habe zwei Int-Variabel in einem Animator definiert, z.B. a und b. Per Zufall setze ich diese. Jetzt will ich von einem Zustand aus ueberpruefen, welchen Wert die Variable b hat. Je nach Wert gehe ich in einen anderen Zustand ueber. Für jeden Uebergang definiere ich mir dann entsprechende Transitionen (Pfeile), die den Sachverhalt beschreiben, oder bin ich auf dem Holzweg? VG Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Helishcoffe Geschrieben 18. Januar 2017 Melden Share Geschrieben 18. Januar 2017 Müsste eigentlich gehen. Probiere doch mal die Zustände erstmal alle einzeln durch und schaue, ob die Animationen auch jeweils abgespielt werden. Wenn nicht, liegt dein Problem wahrscheinlich bei den Animationen selbst oder deine Variablen werden nicht richtig gesetzt Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
UnityProband Geschrieben 19. Januar 2017 Autor Melden Share Geschrieben 19. Januar 2017 Hallo! Danke, bei Selektion eines Game-Objekt sollte der Inspector die Animationen anzeigen, die auf dem Objekt definiert sind? VG Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Helishcoffe Geschrieben 19. Januar 2017 Melden Share Geschrieben 19. Januar 2017 Hallo! Danke, bei Selektion eines Game-Objekt sollte der Inspector die Animationen anzeigen, die auf dem Objekt definiert sind? VG Wenn du dein GameObject Selektierst, dann müsstest du eben das Animator-Component an dein GameObject angeheftet haben. Ohne dem geht's natürlich nicht. Oder was meinst du genau? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
UnityProband Geschrieben 19. Januar 2017 Autor Melden Share Geschrieben 19. Januar 2017 Hallo! Animator und Animationen liegen auf dem Gameobjekt drauf! Ich weiss echt jetzt keinen Rat mehr! VG Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 19. Januar 2017 Melden Share Geschrieben 19. Januar 2017 Das ist schon recht verwirrend ausgedrückt. Es gibt die Komponente "Animator". Auf dieser Komponente können keine Animationen liegen, sondern nur ein "AnimatorController". Es gibt noch die veraltete Komponente "Animation", auf der tatsächlich Animationen liegen, aber ich hoffe stark, dass du die nicht in Betrieb hast. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Helishcoffe Geschrieben 19. Januar 2017 Melden Share Geschrieben 19. Januar 2017 Es gibt noch die veraltete Komponente "Animation", auf der tatsächlich Animationen liegen, aber ich hoffe stark, dass du die nicht in Betrieb hast. Er benutzt ja in seinem Script den Animator. Sein eigentliches Problem waren ja auch die Transitions im Animator. @UnityProband: Oder du vermischst gerade das Alte mit dem neuen Animationssystem. Aber dafür bräuchten wir mehr Infos. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 19. Januar 2017 Melden Share Geschrieben 19. Januar 2017 @UnityProband: Oder du vermischst gerade das Alte mit dem neuen Animationssystem. Sowas in die Richtung war halt meine Befürchtung, daher mein Post Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
UnityProband Geschrieben 24. Januar 2017 Autor Melden Share Geschrieben 24. Januar 2017 Hallo! Erst einmal nochmal ein großes Dankeschön für Eure Unterstützung! Problem ist gelöst! Hatte fünf Animatoren auf je einem Objekt. Habe aber per Skript immer nur eine Variable gesetzt, aber jetzt funktioniert es. Wäre es möglich per Animator ein Soundfile abzuspielen? z.B. so was! Wenn der Animator den Zustand betritt, dann soll zufällig ein Sound aus fünf Soundfiles ausgewählt werden, der dann abgespielt werden soll, dabei soll der Zustand erst verlassen werden, wenn der Sound abgespielt worden ist. Wäre das möglich? Es gibt ja unter den Animator die Möglichkeit ein Skript auszuführen! Oder? Die funf Animatoren können nicht miteinander kommunizieren? VG Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 24. Januar 2017 Melden Share Geschrieben 24. Januar 2017 Problem ist gelöst! Hatte fünf Animatoren auf je einem Objekt. Habe aber per Skript immer nur eine Variable gesetzt, aber jetzt funktioniert es. Bitte sag uns, dass du jetzt nur noch einen Animator hast - und nicht fünf Variablen Was die Sounds angeht: Da sollte sich mit einem StateMachineBehaviour was machen lassen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
UnityProband Geschrieben 24. Januar 2017 Autor Melden Share Geschrieben 24. Januar 2017 Hallo! Per Skript erzeuge ich zwei zufaellige Zahlen zwischen1 und 5 fuer die Auswahl der Objekte. Ich habe 5 Objekte, die je einen Animator besitzen, in meiner virtuellen Umgebung! VG Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 24. Januar 2017 Melden Share Geschrieben 24. Januar 2017 Ach so. Na gut, das ergibt dann doch Sinn Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
UnityProband Geschrieben 3. Februar 2017 Autor Melden Share Geschrieben 3. Februar 2017 Hallo! Ich bräuchte nochmals einen Tipp bezüglich der Umsetzung! Wenn ich in der Update() Rotine eine Funktion wirklich nur einmal per Tastendruck ausführen möchte, wie müsste die Umsetzung aussehen. Dieses Codefragment funktioniert nicht! void Update(){ if(Input.GetKeyDown(KeyCode.Space)) { if(i==0){ Debug.Log(randomnumber); animator.SetInteger("Number",randomnumber); } i = 1; } } Das Setzen der int Variabel findet in einer Statischen Klaase statt! Was mache ich falsch! Die if-Klausel wird ignoriert. Die int Variabl i setze ich am Anfang auf den Wert 0. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Helishcoffe Geschrieben 3. Februar 2017 Melden Share Geschrieben 3. Februar 2017 Normalerweise müsste die Ausgeführt werden. Pack doch mal ein Debug.Log in die If-Klausel. Vielleicht ist i==0 ja auch doch nicht immer wahr, sodass das Problem doch wo anders liegt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
UnityProband Geschrieben 3. Februar 2017 Autor Melden Share Geschrieben 3. Februar 2017 Hallo, danke für den Tipp! Werde ich mal machen! VG Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
UnityProband Geschrieben 3. Februar 2017 Autor Melden Share Geschrieben 3. Februar 2017 Hallo! ja, es wird nur einmal ausgeführt, aber leider immer wieder, wenn ich auf die Leertatse drücke! Verstehe ich jetzt nicht ganz? VG 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.