Kojote Geschrieben 14. Juni 2017 Melden Share Geschrieben 14. Juni 2017 Grüße! Habe gerade ein kleines Problem mit der Komponente Animation. Dabei habe ich folgendes kleines Script: private Animation anima; private void Start() { anima = gameObject.GetComponent<Animation>(); } private void OnTriggerEnter(Collider other) { anima.Play("Sprungbrett Animation"); } Das Script befindet sich auf dem Objekt, auf dem auch die Komponente Animation liegt, diese hat die Animation "Sprungbrett Animation" auch zugewiesen bekommen. Script ist einfach erklärt, dringt etwas in den Collider ein, wird OnTriggerEnter ausgelöst und es soll einmal die Animation abgespielt werden. Rein logisch, simpel, Unity hat jedoch diese Meinung: The animation state Sprungbrett Animation could not be played because it couldn't be found! Please attach an animation clip with the name 'Sprungbrett Animation' or call this function only for existing animations. UnityEngine.Animation:Play(String) SprungbrettSteuerung:OnTriggerEnter(Collider) (at Assets/Scripts/SprungbrettSteuerung.cs:22) Habt ihr eine Ahnung, warum er die Animation nicht findet? Andere Animationen die ich der Komponente zuweise, funktionieren ebenfalls nicht. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 14. Juni 2017 Melden Share Geschrieben 14. Juni 2017 Normal solltest du mit der Animator-Komponente arbeiten und nicht mit "Animation": Wenn du die Animation auf das entsprechende Objekt ziehst, dann sollte Unity einen Animator erstellen und im Animator sollte deine Animation als Zustand zu sehen sein. Hier ein Beispiel, wo er deine Animation abspielt, wenn du Space drückst. Animator anim; void Start () { anim = GetComponent<Animator>(); } void Update () { if(Input.GetKeyDown(KeyCode.Space)) { if (null != anim) { Debug.Log("Playing 'Sprungbrett Animation'"); anim.Play("Sprungbrett Animation"); } } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 14. Juni 2017 Autor Melden Share Geschrieben 14. Juni 2017 OK, hier habe ich jedoch das Problem, dass der Animator beim Spielsart einmal den Play Modus ausführt, also die Animation abgespielt wird. Bei OnTriggerEnter jedoch nicht. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 14. Juni 2017 Melden Share Geschrieben 14. Juni 2017 Ja, der Animator hat einen Defaultzustand (das ist der orange Zustand) und den spielt er 1x ab, sobald der Animator aktiviert wird. Wenn du mehrere Animationen über den Animator verwalten möchtest, dann hast du 2 Möglichkeiten. Entweder du definierst Trigger in deinem Zustandsgraph, über die du dann die jeweilige Animation aufrufen kannst: int jumpHash = Animator.StringToHash("Jump"); Update() { // Zustandsübergang über entprechenden Trigger auslösen und damit die entsprechende Animation ausführen, auf die die Transition zeigt anim.SetTrigger (jumpHash); } oder - du stellst alle Animationen einzeln in den Zustandsgraph ein - stellst den orangen Zustand auf eine leere Animation (hier einfach "Leerlauf" genannt), indem du einen leeren Zustand erstellst und diesen als Default State markierst - und die Animationszustände dann wie oben aufrufst, in deinem Fall wenn der Trigger ausgelöst wird Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 14. Juni 2017 Autor Melden Share Geschrieben 14. Juni 2017 Danke, werd ich morgen gleich mal testen! 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.